HTML5&CSS3——让你的页面美如画(6)

4.CSS布局

1)自动布局(默认文档流)

HTML+CSS元素配合搭建页面框架称为布局。

默认文档流就是对页面布局不加任何修饰,元素自动的布局方式,其特点如下

元素在页面中的显示顺序与元素在代码中出现的顺序是一致的

块级元素独占一行空间,宽度默认为父级的100%,高度由其内容高度所决定

行内元素与其他元素共享一行空间,宽高由其内容所决定。

通过为display属性指定值block, inline ,inline-block等可以改变元素在正常流中的表现形式,使元素在块和行内元素之间相互转化,提高布局的可操作性。

2)浮动布局

扫描二维码关注公众号,回复: 6966732 查看本文章

浮动布局的主要用法是为了让块级元素在一行中显示(列级布局),设置float属性使得元素脱离文档流浮动显示,float属性有以下取值:

left:向左浮动元素     

right:向右浮动元素     

none:【默认值】,不浮动     

inherit:浮动方式继承父元素

脱离文档流的元素有以下特点:

宽度高度默认由内容决定

原先所在位置就会被其他块元素抢占

浮动元素在一行中依次排列,当一行无法容纳的时候会自动换行

应用:

左侧浮动,右侧不浮动(适用于两布局

.content > .left{

float:left;

width:220px;

}

.content > .right {

margin-left:230px;

}

<div class="content">

<div class="left"></div>

<div class="right"></div>

</div>

全部浮动(适用于多列布局

ul> li {

float:left;

with:计算及自定义设置;

}

ul::after {

display:block;

content:"";

clear:both;

}

<ul>

<li></li>

<li></li>

<li></li>

<li></li>

<li></li>

</ul>

3)定位布局

定位布局分为静态定位和相对定位,常用于模态框、下拉菜单、二级菜单、固定宣传栏、网页聊天页面等。

静态定位是所有元素的默认定位方式。意味着将一个元素定位在默认文档流中,默认设置为position: static;。

相对定位与静态定位相似。相对定位的元素我们可以通过属性top, bottom, left, right来改变元素最终的位置。元素移动的时候是相对于当前元素所在的位置进行移动的,默认设置为position: relative;。

position有以下取值:

relative:定位元素相对定位),没有脱离文档流参照点为当前元素原本的位置

absolute:定位元素绝对定位),脱离了文档流参照距离当前元素最近的父定位元素,如果所有的父元素都没有定位元素,参照浏览器视口

fixed:定位元素(固定定位)脱离了文档流参照浏览器视口

sticky:定位元素(粘滞定位)不脱离文档流,relative fixed 的结合,如设置元素样式为top:100px,则当前元素距离浏览器视口顶端为100px的时候,体现fixed的特点,其余情况体现relative的特点

4)伸缩盒布局

伸缩盒布局可以理解为自适应布局,它能够使元素的宽高随显示范围(浏览器视口)的改变而做出特定调整,一般用于响应式布局(手机app

当父元素设置为伸缩盒布局(display : flex;)时:

布局形式为列布局,默认主轴为X轴(flex-direction: row;),默认交叉轴为Y轴,元素会沿着主轴方向排列(横向排列),元素默认高度将沿交叉轴方向占满父元素高度;

当设置flex-direction: column;时,布局形式为行布局,主轴变为Y轴,元素将沿主轴方向排列(纵向排列),元素默认宽度将沿交叉轴方向占满父元素宽度。

flex-wrap用于设置子元素宽度和大于父元素时是否换行默认值为nowrap不换行,设置为wrap时换行

flex的样式表:

flex-basis:主轴上元素的基础值(/)

flex-grow:对盈余空间的分配

flex-shrink:对亏损空间的贡献

flex: grow shrink basis; 速写(且如flex:1;表示flex:1 1 0;

应用:

等比例划分

section {        

display: flex;  

}  

article {

flex: 1;

}

article:nth-of-type(3) {

flex: 2;

}

父元素section为一个伸缩盒子容器,article各占一份,第三个article2假如共有3article,第一个、第二个article1/4,第三个占1/2

剩余部分等比例划分

section {        

display: flex;  

}  

article {

flex: 1 200px;

}

article:nth-of-type(3) {

flex: 2 200px;

}

父元素section为一个伸缩盒子容器,每个article的宽度至少200px,对于屏幕的剩余部分,article各占一份,第三个article2假如共有3article,第一个、第二个article1/4,第三个占1/2

猜你喜欢

转载自www.cnblogs.com/wodeqiyuan/p/11312039.html