CSS常用属性(2)

227 阅读6分钟

行和块分类

行内标签(行内元素)[span、label、i、a等]
一般用于组织文本内容
特点:共享一行,不支持宽高,宽高由内容决定。
块级标签(块级元素)[div、p、h、table、tr、ul、ol、li]
一般用于组织布局
特点:独占一行,不能和其他标签在一行显示,支持宽高。
行内块级标签(行内块级元素)[id、img、input、selec、button]
特点:元素可以同行显示,支持宽高。
相互转化
通过display属性进行相互转化
display:block               //转为块标签
display:inline-block        //转为行内块级元素
display:inline              //转为行内元素
display:none                //隐藏元素,元素会从页面中消失,页面重绘

设置行级元素垂直方向的对齐方式(middle 中线对齐)
vartical-align:middle;
取消无序列表小圆点
list-style:none;
calc函数,可以在css中进行数学运算,注意,运算符前后必须有空格

background-position:calc( 50% - 250px ) 0px;

字体使用

设置字体的样式(设置多种字体样式,中间使用逗号隔开)
font-family:"宋体";

设置字体大小、字号;数字越大,字号越大

font-size:14px;

设置字体粗细(取值100~900 数字越大,加粗效果越好;bold加粗,bolder更粗;lighter更细;normal正常)

font-weight:bolder;

设置字体风格(italic斜体,oblique倾斜)

font-style:oblique;

字体引用

@font-face可以引入字体文件,一个@font-face只能引入一种字体文件。
@font-face {
             //给字体文件取名
             font-family:xxx;
             //连接字体文件路径
             src:url(font/xxx.ttf1);
             }

字体图标

字体是以图标形式显示,设计师在设计字体时,字体形状就是图标。
字体的相关样式都可作用在字体图标。
页面中引入字体图标的css文件,通过不同的class名作用不同的图标或样式。

超链接(给a标签添加样式)

向未被访问过的连接添加样式
a:link { }

向访问过的超链接添加样式

a:visited { }

鼠标移入超链接时添加的样式

a:hover { }

:hover必须放在:link和:visited之后
鼠标点击不放时添加的样式

a:active { }

:active必须放在:hover之后
顺序口诀:L-V-H-A

列表样式

设置列表项标志类型(none无)
可进行无序、有序的自动转换
li {
     list-style-type:upper-roman;
     }

设置列表项标志的显示位置(outside默认值,标志在li外面;inside在li内容里面;)

list-style-position:inside;

设置列表项标志图像(不常用,图片的尺寸css代码无法控制,只能更改图片大小)

list-style-image:url(...);

表格样式

更改表格的样式
border-spacing:设置单元格之间的间距;
border-collapse:设置表格的边框合并为一;

link和@import

这两种方式都可以引入css文件,本质上link为整个网页服务,@import是css服务。
link引入
<link rel="stylesheeet" href="css/style.css">

@import引入

@import url(css/style.css);

link和@import的区别
(1)link是一种标签,@import是一种语法;
(2)link不仅仅可以引入css文件,还可以引入其他文件格式;@import只能引入css样式;
(3)加载时间:link是随着页面的加载而加载;@import等页面加载完成之后再加载;
(4)兼容问题:link的兼容性比@import好;
(5)link可以被js控制,@import不能被js控制

标准盒模型

构成:
(1)content:代表内容区域,存放内容,文本或者里面图片等等;
(2)padding:内边距,盒子内部的空间,内容与边框之间的间距,相当于快递中的泡沫;
(3)border:盒子的边框,四周边框可以分别设置;
(4)margin:代表外边距,盒子和盒子之间的间距。(父子关系、兄弟关系)

边框border

设置边框,必须设置两个值:宽度和类型,默认显示黑色
设置边框的宽度
border-方位-width:10px;

设置边框的类型(solid实线,dotted点线,double双边线,dashed虚线)

border-方位-style:solid;

设置一条边边框的样式(宽度、类型、颜色)

border-方位:10px dotted red;

复合属性:同时设置四条边的样式:宽度、类型、颜色
注意:
(1)边框必须设置两个值:宽度和类型,默认黑色;
(2)边框可以撑大盒子;
(3)边框渲染原理:只设置一条边框时,显示为矩形,如果设置相邻的边,相接部分会沿对角线均分。
(4)通过边框可绘制三角形,设置三边透明,一边不透明;
transparent:设置透明的颜色
步骤:设置一个width:0px的盒子;
分别设置三边透明,一边不透明。

内边距padding

设置盒子中内容到边框的距离
分别设置四周的内边距
padding-left30pxpadding-right30pxpadding-top30pxpadding-bottom30px

复合属性(设置一个值:代表四周同时设置内边距;设置两个值:代表上下或左右;设置三个值:代表上、左右、下;设置四个值:代表上、右、下、左)
padding:30px;
padding会撑大盒子,背景颜色会铺设padding区域
应用场景:可作为导航左右间距。

外边距margin

盒子与盒子之间的距离,外边距
margin重叠性
盒子和盒子之间是兄弟关系,再垂直方向会发生重叠,以其中最大值为准。
注意:margin在水平方向是叠加的。
margin-top传递性
盒子和盒子之间是父子关系,子元素设置margin-top会传递给父元素。
原因:子元素设置margin-top后找不到父元素的边界就传递给了父元素。
解决方案:
(1)给父元素设置border:1px solid transparent;会更改盒子的大小。
(2)给父元素设置padding,也会改变盒子大小;
(3)给父元素设置overflow:hidden;借助BFC容器的特点,容器里的元素如何排列不会影响容器外的元素。

标准盒子的大小的计算

标准盒子真正大小的计算

css中设置的width和height分别代表内容区域(content)的大小。
宽度=content(width)+ padding * 2(左右)+ border * 2 (左右)
高度=content(height)+ padding * 2 (上下)+ border * 2 (上下)
标准盒子所占空间的大小计算:
宽度=content(width)+ padding * 2(左右)+ border * 2 (左右)+ margin * 2 (左右)
高度=content(height)+ padding * 2 (上下)+ border * 2 (上下)+ margin * 2 (上下)

怪异盒子(IE盒模型)

width和height包含了content和padding和border,目前主流浏览器默认都是标准盒子模型。
可以通过box-sizing来转换盒模型。
content-box:标准盒模型
border-box:怪异盒模型

IE盒真正的大小计算

宽度=width(包含了content+padding+border)
高度=height(包含了content+padding+border)

IE盒所占空间的大小计算

宽度=width(包含了content+padding+border)+ margin * 2 (左右)
高度=height(包含了content+padding+border)+ margin * 2 (上下)

IE盒拓展

width设置百分比和不设置
设置百分比:参考父元素的宽度,设置content内容区域的宽度,添加border+padding会更改盒子的大小,添加margin会改变盒子所占空间的大小。
默认不设置:相当于auto,代表动态获取到父元素内容区域宽度,包含了border+padding+margin。
margin:0 auto;
上下外边距为0;左右为auto,代表自适应,将剩余空间均分左右两侧,可以设置盒子水平居中。