一个模式的元素需要另一个元素
display:block 转换为块级元素
display:inline 转换为行内元素
display:inline-block 转换为行内块
具有块元素和行元素的特点
特点:
1.和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
2.默认宽度就是它本身内容的宽度(行内元素特点)
3.高度,行高,外边距以及内边距都可以控制(块级元素特点)
background-color 背景颜色 预定义的颜色值/十六进制/RGB代码
background-image 背景图片 url(图片路径)
background-repeat 是否平铺 repeat /no-repeat/repeat-x/repeat-y
background-position 背景位置 length/position 分别是X和Y坐标 可以是方位名词 不分先后。
background-attachment 背景附着 scroll 滚动 fixed固定
背景简写 书写简单
背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
背景色半透明
background:rgba(0,0,0,0.3);后面必须是4个值
装饰性的小图片 或者超大的背景图片都是用CSS背景来做的,有点是非常容易控制(另外还有精灵图的使用)
Document
层叠性,继承性,优先级
相同选择器给设置相同的样式,此时一个样式就会覆盖(叠层)另一个冲突的样式,层叠性现主要解决样式冲突的问题。
原则:样式冲突,遵循的原则就是就近原则,哪个样式离结构近,就执行哪个样式。样式不冲突,不会层叠。
口诀:长江后浪推前浪,前浪死在沙滩上。
现实中的继承:我们继承了父亲的姓氏。CSS中继承:子标签会继承父标签的某些样式。如文本的颜色和字号,简单就是:子承父业。
继承性可以降低代码复杂性,简化代码,降低CSS样式复杂性。子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承,以及color属性,和文字相关的样式都可以继承)
口诀:龙生龙,凤生凤,老鼠的孩子会打洞。
行高的继承:可以直接写在font里面。行高可以有单位也可以没有单位。如果子元素没有设置行高,则会继承父元素的行高为1.5.此时子元素的行高是当前子元素的文字大小*1.5
body行高1.5 这样写法最大的优势是里面子元素可以根据自己文字大小自动调整行高。
font: 12px/1.5 'Microsoft YaHei';
当同一个元素指定多个选择器,就会有优先级的产生。选择器相同,则执行层叠性,选择器不同则根据选择器权重执行。
优先级规则
继承或者*的权重最低了。元素选择器是1,类选择器和伪类选择器是10,ID选择器是100,行内样式是1000,!important无穷大。
看标签到底执行哪一个样式,就先看这个标签有米有直接被选出来。
继承的权重是0,如果该元素没有直接被选中,不管父元素权重多高,子元素得到的权重都是0。
复合权重叠加
把选择器权重直接相加。最后哪个大就显示哪个的。
div ul li 0.0.0.3
.nav ul li 0.0.1.2
a:hover 0.0.1.1
权重越高优先执行。
布局盒子的核心本质就是利用CSS摆盒子。
border边框:构成一个盒子粗,实,颜色等等
content内容:盒子内容默认与边框左上角靠近。
padding内边距:控制内容与边框距离。
margin外边框:盒子与盒子的距离。
border-width边框宽粗细,单位PX; border-style边框风格,实线虚线点线等, border-color边框颜色。
dashed虚线
dotted点状
border:1px solid red;(没有顺序);
border-top:5px solid pink;
bord-left:6px dashed purple;
border-bottom:2px dotted red;
注意边框样式的层叠性。(比较注意就近原则)
border-collpase控制相邻单元格的边框(collpase合并的意思)
注意:盒子边框会影响盒子实际大小。
padding-left左内边距;-right右内边距;-top上内边距;-bottom下内边距。
padding:5px; 一个值代表上下左右都是5像素内边距。
padding:5px 10px; 两个值代表上下内边距是5px,左右是10px。
padding:5px 10px 20px; 3个值上是5px内边距,左右是10px内边距,下是20px内边距。
padding:5px 10px 20px 30px; 4个值就是顺时针上右下左分别是5px 10px 20px 30px.
注意:内边距会影响盒子大小,会撑大盒子。
解决方案:如果保证盒子跟效果大小保持一致,则让width和height减去多出来的内边距大小即可。
如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小,会继承父级的。
数值和padding一样的写法
margin-left;margin-right;margin-top;margin-battom;
外边距可以让块级盒子水平居中,但是必须满足两个条件
常见写法:
行内元素和行内块元素水平居中,给其父元素添加text-align:center;
Document
1
2
效果如下图
使用margin定义块元素的垂直外边距时,可能出现外边距塌陷问题。
嵌套块元素垂直外边距塌陷,对两个嵌套块元素(父子关系),父元素有上外边距同时,子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案
1.可以为父级元素定义上边框border,并设置它的边框颜色透明。会变大盒子
border:1px solid transparent;
2.可以为父元素定义上内边距padding:1px 会撑大盒子
3.可以为父元素添加overflow:hidden;不会撑大盒子
Document
网页元素很多都带有默认的内外边距。布局前要清除网页元素的内外边距。
* {
margin: 0;
padding: 0;
}
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但转换为块元素或者行内块元素就可以了。
----------------
在CSS3种,新增了圆角边框样式,这样我们的盒子就可以变圆角了。
语法 border-radius:length;
参数单位可以是精确的单位px也可以是百分比。
当是具体数值的时候,一个值就是四个角都是一样的, 如果是多个值的时候记住要顺时针。
Document
一个50%
具体数值
三个值
2个值
4个值