font-family: Microsoft YaHei, Heiti SC, sans-serif;font-family属性值可以书写多个字体名,各个字体名用逗号隔开,执行顺序是从左向右依次查找。
font-family属性最后设置一个字体族名,网页开发建议使用无衬线字体族(Sans-Serif)。
通用字体族:
使用Web Fonts: @font-face { font-family: 'CustomFont'; src: url(https://example.com/CustomFont.woff2) format('woff2'); }
复合属性连写的font格式:font:font-style font-weight font-size/line-height font-family;
必须按顺序书写,并且字号和字体值(后两个)必须书写,否则font属性不生效。
p { line-height: 1.6; }
white-space属性设置如何处理元素内的空白,默认空白会被浏览器忽略。
值为nowrap:文本不会换行,会在同一行上继续,直到遇到 标签为止。
值为pre:空白会被保留,其行为方式类似 HTML 中的
标签。
值为pre-wrap:保留空白符,正常换行。
值为pre-line:合并空白符,保留换行符。
选中某元素的所有后代(包含儿子、孙子、重孙子),选择器之间用空格隔开。 /* 选中div下的a元素 */ div a { color: #000; }
选中某元素的子代元素(最近的子级),选择器之间用>隔开。 div > a { color: #000; }
选中多组标签设置相同的样式,选择器之间用逗号,隔开。 div, a { color: #000; }
选中同时满足多个条件的元素,选择器之间连写,没有任何符号。 div.box { color: #000; }
/* 选中div后相邻的兄弟p元素 / div + p { color: green; } / 选中div后的所有兄弟p元素 */ div ~ p { color: green; }
/* 选中具有title属性的元素 / [title] { color: green; } / 选中title属性值为hello的元素 / [title="hello"] { color: green; } / 选中title属性值以a开头的元素 / [title^="a"] { color: green; } / 选中title属性值以a结尾的元素 / [title$="a"] { color: green; } / 选中title属性值包含a的元素 / [title="a"] { color: green; }
伪类很像类,但不是类,是元素特殊状态的一种描述。伪类表示元素状态,选中元素的某个状态设置样式。
超链接一共有4个状态,给超链接设置状态时,需要按LVHA(LV哈)顺序书写。
根据元素的结构关系查找元素。
nth-child(公式)用法:
下面了解即可:
作用:选中元素中的一些特殊位置。创建虚拟元素(伪元素),用来摆放装饰性的内容。
必须设置content: "内容";属性,用来设置伪元素内容,如果没有内容,则内容留空即可。伪元素默认是行内显示模式,权重和标签选择器相同。
子级默认继承父级的文字控制属性。
相同的属性会覆盖,即后面的属性覆盖全面的属性。不同的属性会叠加,即不同的属性都生效。
也叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则。
规则:选择器优先级高的样式生效。
公式:通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important
如果是复合选择器,则需要权重叠加计算。
公式:(行内样式,id选择器个数,类选择器个数,标签选择器个数)
规则:从左往右依次比较个数,同一级个数多的优先级高,如果个数相同,则向后比较。!important权重最高,继承权重最低。
块级(block):独占一行;宽高属性生效;默认宽度是父级的100%
行内(inline):一行共存多个;宽高属性不生效;宽高由内容撑开
行内块(inline-block):一行共存多个;宽高属性生效;宽高默认由内容撑开
盒子尺寸=内容尺寸+内边距尺寸+border尺寸。外边距margin不会影响盒子的大小,但会影响盒子的位置。
给盒子加border/padding会撑大盒子,解决方法有二:
垂直排列的兄弟元素,上下margin会合并,取两个margin中的较大值生效。
父子级的标签,子级添加上外边距会产生塌陷问题,导致父级一起向下移动。
解决方法:
行内元素添加margin和padding,无法改变元素垂直位置。
解决方法:给行内元素添加行高(line-height)来改变垂直位置。
正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%。 div { width: 200px; height: 200px; background-color: red; border-radius: 100px; /* border-radius: 50%; */ }胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半。
产生的原因:行内元素、行内块元素,彼此之间的换行会被浏览器解析为一个空白字符。 解决方案:
产生原因:行内块元素与文本的基线对齐,而文本的基线与文本最底端之间是有一定距离的。 解决方案: 方案一:给行内块设置vertical,值不为baseline即可,设置为 middel、bottom、top均可。 方案二:若父元素中只有一张图片,设置图片为 display: block。 方案三:给父元素设置 font-size: 0。如果该行内块内部还有文本,则需单独设置fontsize。
布局相关技术有:
清除浮动推荐使用双伪元素法: /* before解决外边距塌陷问题 */ .clearfix::before, .clearfix::after { content: ''; display: table; }
/* after清除浮动 */ .clearfix::after { clear: both; }
给父元素设置display: flex;,子元素可以自动挤压或拉伸。
Flex组成部分:
灵活改变盒子在网页中的位置,属性:position。设置盒子的位置用边偏移属性:left、right、top、bottom。
改变位置的参照物是自己原来的位置,不脱标(占位),标签显示模式不变。 div { position: relative; top: 100px; left: 100px; }
工作中一般不单独使用相对或绝对定位,都是配合着使用:子级绝对定位,父级相对定位(子绝父相)。
首先设置绝对定位,水平垂直边偏移为50%,最后transform: translate(-50%, -50%)。 div { position: absolute; left: 50%; top: 50%; /* 50% 就是自己宽高的一半 */ transform: translate(-50%, -50%); }
元素的位置在网页滚动时不会改变。
即堆叠层级,默认按照标签书写顺序,后来者居上。
z-index默认是0,取值越大显示顺序越靠上。
定位模式属性值是否脱标显示模式参照物相对定位relative否保持标签原有显示模式自己原来位置绝对定位absolute是行内块特点已经定位的祖先元素;浏览器可视区固定定位fixed是行内块特点浏览器窗口
/* 版心 */ .wrapper { margin: 0 auto; width: 1200px; }
即CSS Sprites,是一种网页图片应用处理方式。把网页中一些背景图片整合到一张图片文件中,再精确定位出背景图片的位置。
优点:减少服务器被请求次数,减轻服务器压力,提高页面加载速度。
实现步骤:
展示的是图标,本质是字体。作用是在网页中添加简单的、颜色单一的小图标。
字体图标下载:https://www.iconfont.cn/
属性名:vertical-align,默认是基线对齐(baseline),其他属性值:top(颈部对齐)、middle(居中对齐)、bottom(顶部对齐)。
浏览器把行内块、行内标签当做文字处理,默认按基线对齐。
可以为一个元素在不同状态之间切换的时候添加过渡效果。 img { width: 100px; height: 100px; transition: all 1s; }
img
{ width: 200px; height: 200px; }平面转换又叫2D转换,改变盒子在平面内的形态(平移translate()、旋转rotate()、缩放scale()、倾斜skew()),一般与过渡配合使用,为元素添加动态效果。
属性:background-image: linear-gradient();background-image: linear-gradient( 渐变方向(to 方位名词 或 角度度数), 颜色1 终点位置, 颜色2 终点位置, ...... );如果不指定方向,默认从上到下渐变:
/* 蓝色渐变到红色 / linear-gradient(blue, red); / 蓝色占80%渐变到红色 / linear-gradient(blue 80%, red); / 多个终止色 / linear-gradient(blue, red, yellow, green, orange); / 透明色 */ linear-gradient(transparent, rgba(0, 0, 0, 0.5));
属性:background-image: radial-gradient();background-image: radial-gradient( 半径 at 圆心位置(半径可以是2条,则为椭圆), 颜色1 终点位置, 颜色2 终点位置, ...... );
指定了观察者与Z=0平面的距离,为元素添加透视效果(近大远小、近实远虚)。
perspective属性要添加给直接父级,取值范围800-1200(经验值)。
.father { perspective: 1000px; } .son { width: 100px; height: 100px; margin: 100px auto; background-color: rebeccapurple; transition: all 0.5s; } .son
{ transform: translateZ(-300px); }左手法则:根据旋转方向确定取值正负。左手握住旋转轴,拇指指向正值方向,其他四个手指弯曲方向为旋转正值方向。
作用是设置元素的子元素是位于3D空间还是平面中,属性名:transform-style,属性值:preserve-3d(子级处于3D空间),flat(子级处于平面中)。
动画animation是加强版的过渡。实现步骤:
animation: 动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕时状态。 .box { width: 100px; height: 100px; background-color: pink; /* 使用动画 / animation: change 1s; } / 定义动画:宽度从100变化到800 / @keyframes change { from { width: 100px; } to { width: 800px; } } / 定义动画 另一种写法 */ @keyframes change2 { 0% { width: 100px; height: 100px; } 20% { width: 300px; height: 200px; } 100% { width: 800px; height: 300px; } }
目前rem布局方案中,将网页等分成10份,HTML标签的字号为视口宽度的1/10。
是相对单位,相对视口的尺寸(viewport width,viewport height)计算结果。
1vw = 1/100视口宽度,1vh = 1/100视口高度。
手机屏幕大小不同,分辨率不同,如何设置不同的HTML标签字号?
媒体查询能够检测视口的宽度,然后编写差异化的CSS样式。当某个条件成立,执行对应的CSS样式。
@media (width: 500px) { body { background-color: red; } }
@media 媒体类型 and (媒体特性) { CSS代码 }
媒体类型用来区分设备类型:
媒体特性用来描述媒体类型的具体特征:
逻辑操作符:and、only、not。
CSS 资源:
本文作者:a
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!