CSS基础知识
2019-12-18 10:08:32 0 举报AI智能生成
CSS基础知识大全
CSS3
css
css基础
模版推荐
作者其他创作
大纲/内容
基本属性
边框
border-width
边框宽度
border-color
边框颜色
border-style
边框样式
border
宽度,颜色,样式的复合写法,没有先后顺序
boder : 1px solid red;
可以只写部分,没有设置的都会变为默认
border-width默认为medium,border-color默认字体颜色,border-style必须指定,否则边框不显示
一般使用者三者都要写,最好不要漏
border-image
border-image 属性是一个简写属性,用于设置以下属性<br>
border-image-source
用在边框的图片的路径。
border-image-slice
图片边框向内偏移。
border-image-width
图片边框的宽度。
border-image-outset
边框图像区域超出边框的量。
border-image-repeat
图像边框是否应平铺(repeated)、铺满(rounded)或拉伸(stretched)。
border-style
border-radius
语法
border-radius: y轴长度 / x轴长度;
原理
其中y轴为25pt,x轴为50pt
border-radius:25pt / 50pt;
其中 / 前面的25pt为椭圆y轴,后面的为椭圆x轴
border-radius值数量
从左上开始顺时针设置
单个值:border-radius:4px;<br>四个角落同时为4px:
两个值:border-radius:4px 3px;<br>左上右下4px,左下右上3px
三个值:第一个值左上,第二个右上,右下,最后一个左下
四个值,分别为左上,右上,右下,左下,顺时针
方向
top-right
top-left
bottom-right
bottom-left
单独设置某个角 border-bottom-left-radius,替换bottom-left即可
内边圆角
当radius的大小大于边框宽度时,内边圆角就出来了
border-radius内边半径等于外边半径 - 边框宽度
border-collapse为separate时,表格圆角才能正常显示
常用图形
圆形
div{<br> width:100px;<br> height:100px;<br> border-radius:50%;<br>}
半圆
div{<br> width:100px;<br> height:50px;<br> border-radius:50px 50px 0 0 ;<br>}
扇形
div{<br> width:100px;<br> height:100px;<br> border-radius:100px 0 0 0 ;<br>}
椭圆
div{<br> width:100px;<br> height:50px;<br> border-radius:100px /50px;<br>}
box-shadow
语法
box-shadow: h-shadow v-shadow blur spread color inset;
h-shadow
阴影x轴偏移
v-shadow
阴影y轴偏移
blur
阴影模糊半径
spread
阴影扩展半径
color
阴影颜色
inset
阴影类型,如果不设置默认为外阴影
单边阴影
一个轴设置,另一个轴设置为0
四边相同阴影
xy轴都设置为0,仅设置模糊半径和扩散半径
内阴影
加上inset即可
多层阴影
每层阴影使用英文逗号隔开
其他
内阴影对于图片无效
设置了圆角后阴影也是圆角的
各个方向的边框
每边的边框可以单独设置
border-top-width,border-top-style,border-top-color
border-right-width,border-right-style,border-right-color
border-bottom-width,border-bottom-style,border-bottom-color
border-left-width,border-left-style,border-left-color
可以在一个属性当中设置四条边
border-width:1px 0;
设置上下边框1px宽度,左右边框0px
当设置四个值时,分别代表:上右下左<br>三个值:上、左右、下<br>两个值:上下、左右<br>一个值:上下左右
border-style、border-color同理
外边框
用来设置一个或多个单独的轮廓属性
轮廓不占据空间,它们被描绘于内容之上<br>
outline
语法:outline: 1px solid white;
outline-style
outline-width <br>
outline-color<br>
outline-offset
控制outlien 与border之间的距离,可以为负值<br>
语法:outline-offset: length
背景
background
background-color(背景色)
background-image(背景图)
background-repeat(重复方式)
background-attachment(固定还是滚动)
默认scroll
如果设置固定,那么背景与positionfixed相似,始终会固定在一个位置上,不随浏览器滚动
设置为fixed时,background-origin不生效
background-position(图片位置)
所有一起写
background: #00FF00 url(bgimage.gif) no-repeat fixed top;
具体指参阅W3c
backgroud-origin
绘制背景图片的起点
默认以元素左上角为原点
用法
background-origin:padding-box || border-box || content-box
定义了图像开始点在盒子模型中的起点<br>
border-box<br>
以boder盒子为起点
padding-box
以padding盒子为起点
content-box
以content盒子为起点
backgroud-clip
背景图的显示范围,背景图片超出范围后将不显示,那么现实的区域也可以根据值来设定他的显示区域
background-clip:padding-box || border-box || content-box
content-box
仅在盒子模型的content区域以内显示
padding-box
在盒子模型的padding区域以内显示
border-box
在盒子模型的border区域以内显示
background-size
图片尺寸大小
取值
auto<br>
保持图片原始宽度和高度(默认)
长度单位
指定图片大小
需要指定宽度和高度,auto为默认保持比例
background-size:20px 30px<br>background-size:20px <br>background-size:auto 20px
cover<br>
拉伸铺满整个容器(保持长宽比)
contain<br>
保持长宽比拉伸(有时无法铺满容器)
多背景图片<br>
可以为一个容器指定多张背景图片
简单示例<br>
background-image: url(images/scroll_top.jpg),<br> url(images/scroll_bottom.jpg),<br> url(images/scroll_middle.jpg);<br>background-repeat: no-repeat, no-repeat, repeat-y;<br>background-position: center top, center bottom, center top;
文本
所有的属性
https://www.w3school.com.cn/cssref/index.asp#text
font<br>
font:font-style font-size/line-height font-family<br>
font-style
文本风格(可使用斜体)<br>
font-family<br>
字体格式
font-family:"Times New Roman",Georgia,Serif;
如果第一个不满足,则使用第二个字体,依次类推
w3c建议在定义字体是最后以一个类别结尾,例如sans-serif,来保证不同操作系统下网页都能够正确显示。常见的字体族为serif(衬线字体)、sans-serif(非衬线字体),可以简单理解为在所有字体都是失效的情况下,浏览器从字体族中选择一种字体来显示。
font-weight
定义字体粗细
取值
100 - 900
normal(400)<br>
bold(700)
bolder(900)
lighter(100)
font-size
定义字体大小
语法:font-size : absolute-size | relative-size | length
取值
绝对值
xx-small,x-small,small,medium,large,x-large,xx-large<br>
相对值<br>
larger,smaller<br>
百分比
相对于父元素字体的百分比
长度
px,em,rem等
line-height
什么是行高
行高(line-height)
包括内容区与以内容区中线为基础对称拓展的空白区域,我们称之为行高。
例如:设置line-height为100px,那么以已中线为基础,向上50px,向下50px
行高过小(比如为0)则文字会重叠<br>
基线知识:CSS基础-基础知识-基线
5种定义方式
1.line-height可以被定义为:body{line-height:normal;}
浏览器默认(约为1.2)
2.line-height可以被定义为:body{line-height:inherit;}
继承父节点
3.line-height可以使用一个百分比的值body{line-height:120%;}
line-height = font-size * 120%(如: 16px * 120% = 19.2px)
子节点会直接继承19.2px,而不是根据自身节点的font-size重新计算
4.line-height可以被定义为一个长度值(px,em等) body{line-height:25px;}
子节点直接继承此行高
5.line-height也可以被定义为纯数字, body{line-height:1.2}
line-height = font-size * 120%(如: 16px * 1.2 = 19.2px)
与百分比不同,子节点不直接继承19.2px,而是根据自身节点的font-size重新计算
line-height的大小为元素的高度即可实现效果。<br>
单行文本居中与font-size无关,只与行高有关
vertical-align(未完成、待续)
vertical-align用来指定行内元素(inline)或表格单元格(table-cell)元素的垂直对齐方式。也就是说,对于块级元素,vertical-align是不起作用的。
取值
vertical-align:baseline | sub | super | top | text-top | middle | bottom | text-bottom | <百分比> | <长度> | inherit<br>
默认:baseline对齐
文本阴影
text-shadow
text-shadow:[颜色] [x轴位移] [y轴位移] [模糊半径]<br>
与边框阴影使用方式相似
文本溢出
text-overflow:clip | ellipsis<br>
clip直接裁剪
ellipsis最后一个字符变成...
使用text-overflow最大的优点在于搜索引擎可以搜到此省略的文本中的内容
text-overfilow要与white-space,over-flow一起使用,并且需要定义容器宽度才能生效<br>
文本省略或者裁剪三元素搭配使用
/*指定宽度*/<br>width:100px;<br> text-overflow: ellipsis;<br> white-space: nowrap;<br> overflow: hidden;
四者缺一不可
html中文本会在文本容器的最右端实现自动换行<br>
容易混淆的三个
white-space
这个属性是用来控制空白字符的显示的
取值
控制整个文本的展示方式
word-break
这个属性是控制单词如何被拆分换行的
keep-all
一律不拆分,如果过长则溢出容器
break-all
不拆分任何一个单词,如果单词过长无法显示则换行显示
normal
思考:如果一个单词长度超过一行怎么办
控制文本内单词间的展示方式
word-wrap
是wordbreak的补充,控制长度超过一行的单词是否被拆分换行
break-word
强制换行
normal
浏览器默认,只在半角空格或者连字符的地方进行自动换行
控制文本内一个最后单词到容器末端的展示方式
媒体特性
使用媒体查询来让一个页面适合不同的终端设备<br>
媒体类型的引用方法<br>
link<br>
< link rel=...<br>
使用标签即可引入
媒体查询
@media<br>
使用方式
@media 媒体类型 and (媒体特性) { 你的样式}<br>
单个媒体查询
@media logic mediatype and|not|only (media feature) {<br><br> CSS-Code;<br><br>}<br>
多个媒体查询共用一个样式
@media handheld and (min-width: 20em), screen and (min-width: 20em) { ... }<br>
常用媒体类型
all
所有设备
print
打印机
screen
屏幕
speech
应用于屏幕阅读器等发声设备
逻辑词
not
排除某个媒体类型
only
仅对某个媒体类型有效
and
用于连接多个媒体特征
@media screen and (min-width: 500px) and (max-width: 800px) { ... }<br>
区别
not | only 用在媒体类型之前,and 在用在媒体特征之间
选择器
通配选择器
*
元素选择器<br>
body p h1 等等
Id选择器<br>
#id
类选择器
.class<br>
伪类选择器
网站
https://www.runoob.com/css/css-pseudo-classes.html
动态伪类选择器
:link
代表为访问链接的样式,所以只要你是超链接,且未被访问过,则链接都会按照你设定的样式显示
仅a标签有效<br>
:visited
链接被定义为超链接并被点击过时(一般用于a标签)
仅a标签有效
:hover
鼠标经过元素时
对任何元素有效
:active
鼠标点击后不放开则处于active状态
对任何元素有效
:focus<br>
用来定义一个元素本身具备焦点(接受键盘、鼠标、form的输入等)之后,显示的样式
input选中后可以输入就处于focus状态,<br>button点击后也处于focus状态<br>a标签点击鼠标不放也会处于focus状态
对于div之类的元素是没有focus的行为的,因为一个div没法用鼠标获得焦点,但是可以通过设置div的tabIndex可以让元素获得focus伪类
tabindex在这里不展开说明
多个动态伪类同时使用,定义伪类的顺序必须是 : link-visited-hover-active|focus 才能生效<br>
伪类之间的样式是平级的,由于层叠样式的特征,必须顺序定义才能生效
1.同一个元素,他在同一时刻可以同时满足多种不同的动态伪类(如鼠标点击时可以同时有:hover和:active伪类)<br>2.由于层叠样式后一个样式会覆盖前一个样式的特性,在满足多个不同的动态伪类的时候,如果不注意顺序,前面的样式就会被后面的样式覆盖,这就是不按照顺序定义动态伪类而不生效的原因
例如:当点击在一个input输入框上不放时,input 框同时满足 hover 与 active ,如果hover 定义在active 后面,那么层叠样式会用hover的样式覆盖active的样式,导致active的不生效,focus也是同理,当一个input框聚焦时,他很可能也处于hover状态(鼠标停留在输入框上),如果hover定义在focus之后,也会出现同样的问题
状态伪类选择器
状态伪类选择器适用于可以定义checked,enabled,disabled属性的元素
:checked
元素被选中
适用于radio,checkbox
:enabled
未禁止
:disabled
已禁止
<br>
禁用后鼠标悬停按钮上会变成禁止图标
结构伪类选择器
:first-child
选择器匹配属于其父元素的第 1 个子元素
:last-child
选择器匹配属于其父元素的最后 1 个子元素
:root
根元素,在htm文档中,根元素是始终为html
:nth-child(n)
选择器匹配属于其父元素的第 n 个子元素
从1开始
:nth-first-of-type
选择器匹配属于其父元素过滤类型后的第一个子元素
:nth-last-of:type
选择器匹配属于其父元素过滤类型后的最后一个子元素
:nth-last-child(n)
选择器匹配属于其父元素的第 n子元素,从最后一个开始
从1开始
:only-child
选择器匹配属于其父元素的唯一1 个子元素
如果不唯一则不生效
:nth-of-type(n)
选择器匹配属于其父元素过滤类型后的第 n子元素
示例
:nth-last-of-type
选择器匹配属于其父元素过滤类型后的第 n子元素,从最后一个开始编号
:only-of-type
选择器匹配属于其父元素过滤类型后的唯一一个子元素
如果过滤后不唯一则不生效
nth-child与nth-of-type区别
nth-of-type是对子元素过滤类型后再编号,而nth-child则是直接编号
:empty
用例选择没有任何内容的元素
用例处理动态输出内容方面特别方便
如:高亮提示用户搜索结果
#results:empty{<br> background:#fcc<br>}<br>
在#results空时背景色会变
重点:结构伪类寻找节点的过程
示例
结构伪类的工作方式
1.先匹配属于该选择器的元素
2.寻找匹配该选择器的节点的父元素
3.将该父元素的所有直接子元素排序,从1排到n<br>如果是nth-of-type,则先过滤掉与选择器类型无关的元素,然后排序<br>
4.按照nth的值匹配元素,如果匹配成功,则展示
5.按照nth的值匹配元素,如果位置不匹配(是否为选择器所选的元素),则放弃
示例讲解
匹配.btn选择器的类有很多,body下三个div(div1,div2,div3)是他们的父节点
三个父节点都单独为自己的子节点编号
三个父节点按照给定的公式匹配元素,即第2、4、6、...节点,如果是.btn类,且在指定位置,则变橙色
结构伪类选择器中的n
参数n的起始值始终为1,当参数n的值为0时,将匹配不到任何元素
n取值
为具体的数值
1,2,3,4,...
关键字
odd
第奇数个元素
even
第偶数格元素
公式
2n+1、-n+5
按照公式规则选择
常用公式
n
所有元素
3n
第3,6,9,12,...个
n+3
从第3个元素开始
-n+4
第一个到第四个元素
3n+1
组合前者:第1,4,7,10,...个元素
关于结构类型伪类w3c教程中有部分文档
否定伪类选择器
:not()
除了该选择器以外的所有元素
伪元素
伪元素无法在文档树中定位
::first-letter
用来选择文本块中第一个字母
::first-line
用来选择文本块中第一行文本
::before
在元素前面额外插入一些文本
::after
在元素后面额外插入一些文本
与::before一样,需要再样式中插入content来设置文本
div::after{<br> content:"Lorem...";<br>}
content属性
::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空。默认情况下,伪类元素的display是默认值inline,可以通过设置display:block来改变其显示。<br>
取值
string类型
attr() 属性值
获取a的href属性
url()/uri()
a::before{<br> content: url("https://www.baidu.com/img/baidu_jgylogo3.gif");<br>}<br>
counter() 计数器
调用计数器,可以不使用列表元素实现序号功能。<br><br>配合counter-increment和counter-reset属性使用:<br><br>h2:before { counter-increment: chapter; content: "Chapter " counter(chapter) ". " }
::selection
设置用户在浏览器中拖动鼠标左键选中文字等内容的颜色
::selection只可以应用于少数的CSS属性:color, background, cursor,和outline。
其他
https://www.runoob.com/cssref/css-selectors.html
属性选择器
selector[attr]
匹配该选择器并拥有attr属性
selector[attr=val]
匹配该选择器并attr属性为val
selecttor[attr|=val]
匹配该选择器并attr属性为val或者val-开头
selecttor[attr~=val]
匹配该选择器并attr属性的val值中拥有val单词
attr属性中的多个单词需要用空格隔开<br>如:title="word1 word2"
selecttor[attr*=val]
匹配该选择器并attr属性的val值中任意位置包含val单词
selecttor[attr^=val]
匹配该选择器并attr属性的且属性值以val开头
selecttor[attr$=val]
匹配该选择器并attr属性的且属性值以val结尾
目标伪类选择器
:target
用于匹配文档的url中某个标志符的目标元素
通常与与a标签一起使用
<br>
点击 点击 后,下方字体背景会变成粉色
语言伪类选择器
:lang(language) selector 定义某个语言下面的样式
多个选择器组合
群组选择器
将多个拥有相同样式的选择器分在一起
多个选择器指定相同的样式,不需要一份样式分开写多份,而是用如下写法
.class1,.class2,body
使用逗号分隔
同时包含多个选择器
一个元素同时满足好几选择器,两个选择器紧挨一起即可
示例
一个元素同时拥有class1和class2
.class1.class2
选择拥有某个类的标签
li.class3
层次选择器
后代选择器
.class1 .class2
选择所有.class1 下匹配 .class2的后代元素
.class1 *
选择所有.class1 下的所有元素
子选择器
.class1>.class2
选择.class1下的直接子元素中匹配.class2的元素
相邻兄弟选择器
.class1+.class2
选择匹配.class1的元素后边紧贴着的第一个匹配.class2的元素
只匹配后边的兄弟节点,而不匹配前边的
此选择器只改变直接相邻后边的兄弟节点,若相邻的并不是.class2,那么不是匹配的节点
可以匹配多个符合条件的节点
相邻兄弟通用选择器
.class1~.class2
选择匹配.class1的元素后边所有匹配.class2的元素
<br>
只匹配后边的兄弟节点,而不匹配前边的
CSS技巧
样式技巧
利用box-shadow生成多重边框、多重阴影
利用border-radius值大于boder值生成内边圆角<br>
利用线性变化生成渐变色或条纹色
利用 蝉原则 生成随机效果
随机多背景
.stripes {<br> background-color: #026873;<br> background-image: linear-gradient(90deg, rgba(255,255,255,.07) 50%, transparent 50%),<br> linear-gradient(90deg, rgba(255,255,255,.13) 50%, transparent 50%),<br> linear-gradient(90deg, transparent 50%, rgba(255,255,255,.17) 50%),<br> linear-gradient(90deg, transparent 50%, rgba(255,255,255,.19) 50%);<br> background-size: 13px, 29px, 37px, 53px;<br>}
nth-child的n质数随机
利用border-radius,border-width生成各式各样的形状
高级网页设计
动画
svg
布局技巧
利用em将文字与文字的容器保持比例(比如:自制按钮)
利用label + checkbox , :checked 伪类自定义checkbox
/*输入框样式*/<br> input[type="checkbox"] + label::before {<br> content: '\a0'; /* 不换行空格 */<br> display: inline-block;<br> vertical-align: .2em;<br> width: .8em;<br> height: .8em;<br> margin-right: .2em;<br> border-radius: .2em;<br> background: silver;<br> text-indent: .15em;<br> line-height: .65;<br> }<br> /*选中效果*/<br> input[type="checkbox"]:checked + label::before {<br> content: '\2713';<br> background: yellowgreen;<br> }<br> input[type="checkbox"] {<br> position: absolute;<br> clip: rect(0,0,0,0);<br> }<br> input[type="checkbox"]:focus + label::before {<br> box-shadow: 0 0 .1em .1em #58a;<br> }<br> input[type="checkbox"]:disabled + label::before {<br> background: gray;<br> box-shadow: none;<br> color: #555;<br> }
< input type="checkbox" id="awesome" /><br> < label for="awesome">Awesome!<br>
增加遮罩的方法
1.单独写一个遮罩,高亮显示的元素z-index高于遮罩
2.使用需要高亮元素的:before伪元素
3.使用boxshadow
通过在边缘增加阴影来提示用户可滚动内容<br>
精确控制表格列宽
垂直居中
使用flex布局
形状
圆形,椭圆,半圆、内圆等
border-radius
三角
border-width
平行四边形
skew作用于伪元素
.button {<br>position: relative;<br>/* 其他的文字颜色、内边距等样式…… */<br>}<br>.button::before {<br>content: ''; /* 用伪元素来生成一个矩形 */<br>position: absolute;<br>top: 0; right: 0; bottom: 0; left: 0;<br>z-index: -1;<br>background: #58a;<br>transform: skew(45deg);<br>}
菱形
clip-path
clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
切角
方案1,渐变
将。这个渐<br>变需要把一个透明色标放在切角处,然后在相同位置设置另一个色标,并且<br>把它的颜色设置为我们想要的背景色。
background: #58a;<br>background:<br>linear-gradient(-45deg, transparent 15px, #58a 0);
方案2,裁剪路径
background: #58a;<br>clip-path: polygon(<br>20px 0, calc(100% - 20px) 0, 100% 20px,<br>100% calc(100% - 20px), calc(100% - 20px) 100%,<br>20px 100%, 0 calc(100% - 20px), 0 20px<br>);<br>
梯形
transform: perspective(.5em) rotateX(5deg);<br>对before和after伪元素进行变换
常见问题解决
margin重合
<font color="#f15a23">当两个垂直边界相遇时,它们将形成一个边界。这个边界的高度等于两个发生叠加的边界的高度中的较大者。</font>不全是正值,则都取绝对值,然后用正值减去最大值;没有正值,则都取绝对值,然后用0减去最大值。
什么情况下会出现margin重叠
元素的顶边界与前面元素的底边界发生叠加
边界叠加的意义
http://tympanus.net/codrops/2013/07/17/troubleshooting-css/#article-margin
由几个段落组成的典型文本页面为例第一个段落上面的空间等于段落的顶边界。如果没有边界叠加,后续所有段落之间的边界将是相邻顶边界和底边界的和。这意味着段落之间的空间是页面顶部的两倍。如果发生边界叠加,段落之间的顶边界和底边界就叠加在一起,这样各处的距离就一致了。<br>
垂直排列的列表可以上下同时设置margin,后面的上边距的margin不生效
解决方法
只有普通文档流中块框的垂直边界才会发生边界叠加。行内框、浮动框或绝对定位框之间的边界不会叠加。
<font color="#f15a23">适应重叠规律<br></font><font color="#c41230">在写的时候尽量用同一方向的margin<br>其他比较鸡肋的解决方法</font><br>外层元素padding代替<br>内层元素透明边框 border:1px solid transparent;<br>内层元素绝对定位 postion:absolute:<br>外层元素 overflow:hidden;<br>内层元素 加float:left;或display:inline-block;<br>内层元素padding:1px;<br>
清除浮动
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。
清除浮动方法
在使用浮动时才会出现此类问题
使用带clear属性的空元素
在浮动元素后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。
优点:简单,代码少,浏览器兼容性好。
缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。
使用CSS的overflow属性
给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动
给浮动的元素的容器添加浮动
给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。
使用邻接元素处理
什么都不做,给浮动元素后面的元素添加clear属性。
使用CSS的:after伪元素
结合 :after 伪元素和 IEhack ,可以完美兼容当前主流的各大浏览器
给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。
代码示例
总结
清除浮动的方法可以分成两类
一是利用 clear 属性,包括在浮动元素末尾添加一个带有 clear: both 属性的空 div 来闭合元素,其实利用 :after 伪元素的方法也是在元素末尾添加一个内容为一个点并带有 clear: both 属性的元素实现的。
二是触发浮动元素父元素的 BFC (Block Formatting Contexts, 块级格式化上下文),使到该父元素可以包含浮动元素
基础知识
通用属性值
默认值
initial
将属性设置为默认值
继承父元素
inherit
每个属性都有继承性这一特征,有些属性默认继承父元素特征,有些则默认不继承,可以参考w3c
不设置属性
unset
如果该属性是默认继承属性,该值等同于 inherit<br>如果该属性是非继承属性,该值等同于 initial
透明背景
transparent<br>
常用规则
Css编码规则
通配符
^
匹配起始符
$
匹配终止符
*
匹配任意字符
颜色表示
颜色名
red、blue、white等
rgb/rgba
rgb(255,255,255.0.9) 或 rab(100%,50%,20%)
hsl
hsl(0,100%,50%)
16进制
#ff0000
基线
注意:基线(base line)并不是汉字文字的下端沿,而是英文字母“x”的下端沿。
内容区
内容区是指底线和顶线包裹的区域<br>
内容区的大小依据font-size的值和字数进行变化。
盒子模型的内容区
行高(line-height)
包括内容区与以内容区中线为基础对称拓展的空白区域,我们称之为行高。
例如:设置line-height为100px,那么以已中线为基础,向上50px,向下50px
行高过小(比如为0)则文字会重叠<br>
行距
行距是指一行底线到下一行顶线的垂直距离,即第一行粉线和第二行绿线间的垂直距离。
行框(line box)<br>
行框是指本行的一个虚拟的矩形框,是浏览器渲染模式中的一个概念,并没有实际显示。行框高度等于本行内所有元素中行内框最大的值(以行高值最大的行内框为基准,其他行内框采用自己的对齐方式向基准对齐,最终计算行框的高度),当有多行内容时,每行都会有自己的行框。
行内框
每个行内元素会生成一个行内框,行内框是一个浏览器渲染模型中的一个概念,无法显示出来,在没有其他因素影响的时候(padding等),行内框等于内容区域,而设定行高时行内框高度不变,半行距[(行高-字体size)/2]分别增加/减少到内容区域的上下两边(深蓝色区域)。作者:小小的白菜<br>
布局
盒子模型
盒子模型图
盒子组成
在一个文档中,每个元素都被表示为一个矩形的盒子,每个元素都由margin,border,padding,content,这四个区域组成一个盒子,我们可以在盒子模型上清晰地看到元素的各个部分占用了多少宽度和高度<br>
盒子大小
盒子的大小指的是盒子的宽度和高度。大多数初学者容易将宽度和高度误解为width和height属性,然而默认情况下width和height属性只是设置content(内容)部分的宽和高。盒子真正的宽和高按一般下面公式计算:(与box-sizing值有关)
盒子的宽度 = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right<br>盒子的高度 = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
我们一般指定的width 和 height 属性,其实是指定content这个区域的宽度和高度,为什么呢?因为box-sizing的默认值是content-box
box-sizing
指定元素的宽度和高度默认是指定content的宽度和高度,因为box-sizing的默认值是content-box,我们可以修改这个默认值将宽度和高度作用于不同的盒子上<br>
取值
content-box(默认),宽度和高度作用于contentt上
paddint-box
宽度和高度作用于padding上,即指定的宽度和高度为padding部分的宽度和高度
border-box
宽度和高度作用于border上
典型案例
我们想要得到一个宽100px;高100px的div<br><br>
代码片段
打开浏览器,检查元素却发现div的宽度和高度为142px(context + padding + border),而不是我们想要的100px大小<br>padding和border把整个盒子撑大了
由于boxsizing默认值是content-box,所以指定宽高时,指定的是content部分的大小为100px,与我们想要的结果不符
将box-sizing设置为border-box,即可将宽度和高度指定于border部分
设置box-sizing:border-box
设置后发现宽度和高度变成预期的100px,content自动缩小到合适的大小
IE盒子模型(怪异盒子模型)
区别:IE盒子模型的box-sizing默认是botder-box
弹性布局(flex)
使用方式: display:flex
博客地址:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
多列布局
单位
绝对长度单位
像素px
最常见的单位,很多其他单位都会最终映射成像素。<br>
英寸in<br>
1in = 2.54cm = 96px
厘米cm<br>
1cm = 10mm = 96px/2.54 = 37.8px
毫米mm<br>
1mm = 0.1cm = 3.78px
1/4毫米q
1q = 1/4mm = 0.945px
点pt<br>
1pt = 1/72in = =0.0139in = 1/722.54cm = 1/7296px = 1.33px<br>
派卡pc
1pc = 12pt = 1/6in = 1/6*96px = 16px
相对长度单位
em
em相对于应用在当前元素的字体尺寸
如果用于font-size属性本身,相对于父元素的font-size计算;若用于其他属性,相对于元素本身的font-size计算。
rem
rem相对于根元素的字体尺寸(即html元素)IE8不兼容
子主题
ex
所用字体中小写x的高度,不同字体x的高度可能不同。
实际上,很多浏览器取em值一半作为ex值。
ch
ch与ex类似,被定义为数字0的宽度。当无法确定数字0宽度时,取em值的一半作为ch值。
相对视窗宽高的长度单位
视窗相关的长度值相对于初始包含块的大小。当初始包含块的宽高变化时,它们都会相应地缩放。然而,当根元素的overflow值为auto时,任何滚动条会假定不存在。<br>
vh
布局视窗高度的1/100
vw
布局视窗宽度的1/100
vmin
布局视窗高度和宽度之间的最小值的 1/100
vmax<br>
布局视窗高度和宽度之间的最大值的 1/100
计算长度
calc()<br>
可以动态地计算长度,如:calc(100% - 10px)
不要忘记在calc() 函数内部的- 和+ 运算符的两侧各加一个空白符,否则会产生解析错误!
Cascade(级联、层叠)
什么叫级联?
级联是样式间的层叠关系。它决定了如何解决冲突样式冲突,他定义了css是如何工作的。
当样式重复(冲突),级联会根据这三项觉得显示哪一个样式<br>
样式来源<br>
浏览器默认样式
浏览器标签会自带一些样式,如<p>等等
这些样式优先级比较低
用户定义的样式
选择器
那个选择器的优先级更高<br>
!important
如果一个元素被声明为 !important,那么他将变为更高优先级的样式
内联样式标记为!important的话,那么他的样式不可能会被覆盖
优先级
内联样式 >
样式顺序
样式表中声明样式的顺序
常见定位方案
普通流 (normal flow) <br>
在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。
浮动 (float) <br>
在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。
绝对定位 (absolute positioning) <br>
在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。
BFC 块级格式化上下文 (Block Fromatting Context)
概念
Formatting context(格式化上下文) 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。
具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。
BFC遵循普通流的定位方案
如何触发 BFC
body 根元素
浮动元素:float 除 none 以外的值
绝对定位元素:position (absolute、fixed)
display 为 inline-block、table-cells、flex
overflow 除了 visible 以外的值 (hidden、auto、scroll) <br>
BFC 特性及应用
1. 同一个 BFC 下外边距会发生折叠
标准的制定<br>
W3C 并不“生产”标准。实际上,它扮演的是一个论坛的角色:W3C 以工作组的方式,把某项技术的相关各方聚<br>集起来,最终由他们来产出标准。<br>W3C设<br>定了整个平台的规则,监督整个进程。
W3C工作组
大部分来自 W3C会员公司的成员(比如浏览器厂商、主流网站、研究机构、常规技术公司等)
它们每年的会费也是W3C 的主要资金来<br>源,使得W3C 能够免费、开放地发布所有技术规范,而不像其他标准制定<br>组织那样不得不采取收费政策来维持运作。
特邀专家<br>
W3C工作人员
每项规范从最初启动到最终成熟,都会经过以下阶段。
(1) 编辑草案(ED)
(2) 首个公开工作草案(FPWD)
(3) 工作草案(WD)
(4) 候选推荐规范(CR)
(5) 提名推荐规范(PR)
(6) 正式推荐规范(REC)
参考书籍及博客
css secret
w3c
图解CSS3核心技术与案例实战
菜鸟教程
MDN
Collect
Get Started
Collect
Get Started
Collect
Get Started
Collect
Get Started
评论
0 条评论
下一页