CSS基础
CSS引入方式
(1)内嵌式
在<head>标签中嵌套<style>标签;
优先级高于外联式;
(2)外联式
在<head>标签中通过<link>标签引入外部.css文件;
优先级最低;
(3)行内式
在标签中通过属性style引入css;
优先级最高;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./my.css">
<!-- 这是外联式引入 -->
<style>
h1{
color: blueviolet;
}
</style>
<!-- 这是内嵌式引入 -->
</head>
<body>
<h1>123</h1>
<p>这是段落标签</p>
<div style="color: blue;">这是div标签</div>
<!-- 这是行内式引入 -->
</body>
</html>
CSS选择器
CSS选择器用于选择某个/些标签,修改其样式。常见的CSS选择器有标签选择器、类选择器、id选择器、通配符选择器等;
标签选择器
选中一类标签,修改样式;
例如,选中页面所有的<p>,修改其字体颜色为红色;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p{
color: red;
}
</style>
</head>
<body>
<p>pppppppp</p>
<p>pppppppp!!!!!!!</p>
</body>
</html>
类选择器
选中具有相同class属性值的标签,修改其样式;
例如,class为redp的字体颜色为红色,为greenp的字体颜色为绿色,为fontsize的字号大小为30px;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.redp{
color: red;
}
.greenp{
color: green;
}
.fontsize{
font-size: 30px;
}
</style>
</head>
<body>
<!-- 定义+使用 -->
<p class="greenp">11111</p>
<p class="redp fontsize">22222</p>
</body>
</html>
id选择器
选择id属性值相同的一个标签(id具有唯一性),修改其样式;
例如,修改id为div1的字体颜色为蓝色。字号大小为30px;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#div1{
color: blue;
font-size: 30px;
}
</style>
</head>
<body>
<div id="div1">蓝色的大字</div>
</body>
</html>
通配符选择器
选择所有标签,修改其样式;
例如,修改所有字体颜色为红色;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
color: red;
}
/* 通配符可以用来清除默认样式 */
</style>
</head>
<body>
<div>123</div>
<p>456</p>
<h3>789</h3>
</body>
</html>
复合选择器
后代选择器
选中父级标签内的子级标签,修改其样式;
例如,修改<div>中的所有<p>标签的样式;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>后代选择器</title>
<style>
div p{
color: red;
}
</style>
</head>
<body>
<p>这是p标签</p>
<div>
<p>这是div的子标签p</p>
</div>
</body>
</html>
子代选择器
与后代选择器不同,子代选择器是只能选中父级标签的直接子级标签(相对于父级标签的嵌套深度为1),修改其样式;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div a {
color: rebeccapurple;
}
/* 选所有子节点 */
div > a{
text-decoration: none;
}
/* 选直接子节点 */
</style>
</head>
<body>
<div>
父级<br>
<a href="#">div的子节点</a>
<p>
<a href="#">div的非直接子节点</a>
</p>
</div>
</body>
</html>
并集选择器
并集选择器能够同时选中多种不同类型的标签,修改其样式(通过’,'分隔);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p,div,span{
color: aqua;
font-size: 30px;
}
</style>
</head>
<body>
<p>123</p>
<div>456</div>
<span>789</span><br>
<h1>000</h1>
</body>
</html>
交集选择器
交集选择器是将选择条件叠加在一起,选择符合所有条件的标签,修改其样式(通过’ '分隔);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
p.box{
color: red;
}
/* 交集选择器 */
div.box>h1{
text-decoration: underline;
}
</style>
</head>
<body>
<p class="box">这是p标签</p>
<p>ppppp</p>
<div class="box">
这是div标签
<h1>这是要有下划线的标签</h1>
</div>
</body>
</html>
伪类选择器
伪类选择器有多种伪类,这里先以动态伪类的:hover为例(设置鼠标悬停时的标签样式);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>伪类选择器标签</title>
<style>
a:hover{
color: red;
text-decoration: overline;
}
</style>
</head>
<body>
<a href="#">超链接</a>
</body>
</html>
当div1和div2是同级标签,且要通过div1悬停时修改div2的样式时,如下所示:
.div1:hover +.div2 img{
display: none;
}
/* 使用hover控制同级元素 */
而结构伪类选择器,是根据元素在HTML中的结构关系查找元素;
参数可以填写公式(可以不是常数),例如2n、2n+1、-n+5(前5个)、n+5(第5个及其以后的元素)[这里n=0,1,…];
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
ul li:first-child{
color: aqua;
}
ul li:last-child{
color: red;
}
ul li:nth-last-child(2){
color: purple;
}
/* 倒数第n个(不含0) */
ul li:nth-child(3){
color: greenyellow;
}
ul.test2 li:nth-child(2n){
color: chocolate;
font-size: 30px;
}
</style>
</head>
<body>
<ul>
<li>这是第1个li</li>
<li>这是第2个li</li>
<li>这是第3个li</li>
<li>这是第4个li</li>
<li>这是第5个li</li>
<li>这是第6个li</li>
<li>这是第7个li</li>
<li>这是第8个li</li>
</ul>
<hr>
<ul class="test2">
<li>这是第1个li</li>
<li>这是第2个li</li>
<li>这是第3个li</li>
<li>这是第4个li</li>
<li>这是第5个li</li>
<li>这是第6个li</li>
<li>这是第7个li</li>
<li>这是第8个li</li>
<li>这是第9个li</li>
<li>这是第10个li</li>
</ul>
</body>
</html>
其他常见的伪类选择器请参考链接:
伪类选择器
CSS选择器优先级
!important>内联选择器>id选择器>类别选择器>属性选择器>伪类选择器>通配符选择器>继承选择器;
在复合选择器中,优先级按如下模式进行计算:
其中,每一级之间没有进位,规则类似于字符串的字典序;
另外,继承选择器的属性无法通过加!important修改优先级;
字体和文本样式
字体样式
属性名称 | 含义 |
---|---|
font-size | 字体大小,带单位px |
font-weight | 字体粗细,400正常,700加粗 |
font-style | 字体倾斜,normal正常,italic倾斜 |
font-family | 字体类型,可以写多个,sans-serif为无衬线字体 |
font为复合属性,可以简写为如下形式:
div{
font:style weight size/line-height family;
}
其中style、weight等直接写属性的取值;line-height为行高,可以取值为像素或字号倍数;
文本样式
text-indent属性表示文本缩进,取值为像素或em(1em为标签的font-size大小);
text-align属性表示文本水平对齐方式,取值为left/right/center;
text-decoration属性表示文本修饰,常见取值如下表所示:
属性值 | 效果 |
---|---|
underline | 下划线 |
line-through | 删除线 |
overline | 上划线 |
none | 无装饰线(常用于超链接清除下划线) |
另外,标签居中可以通过margin属性取值为0 auto实现(在盒子模型中有此属性);
标签背景
background-color为背景颜色,取值有英文单词、rgb、rgba、#等方式;
其中,非rgba的设置可以通过opacity属性设置透明度;
background-image为背景图片,通过其中的url()设置图片源;
background-repeat属性为背景平铺方式;
background-position为背景图片的位置,有两个值,分别是水平位置(left/center/right)、垂直位置(top/center/bottom);
background也是一个复合属性,常见的取值方式如下:
div.img{
margin: 0 auto;
width: 100px;
height: 100px;
background: blue url("../2023_08_31/88.jpg") no-repeat center center cover;
}
当然,background可以不按color image repeat position顺序取值;
标签显示模式
通过display属性,可以修改标签现有的显示模式;
三种显示模式的特点如下图所示:
CSS特性
CSS有三大特性,分别是继承性、层叠性、优先级;
继承性
子元素默认继承父元素样式特点,其中,文字控制属性是可以继承的,如color、font、text、line-height等;
层叠性
选择器优先级相同时体现层叠性,效果可能是叠加,也可能是覆盖;
以下面这个例子为例,gray会覆盖red(覆盖),而div没有设置的属性font-size,由.box选择器进行设置(叠加);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
color: red;
color: gray;
}
.box{
font-size:30px;
}
</style>
<!-- 选择器优先级相同时,才通过层叠性判断,表现为覆盖/互补 -->
</head>
<body>
<div class="box">123</div>
</body>
</html>
优先级
继承<通配符选择器<标签选择器<类选择器<id选择器<行内样式<!important
(详见“CSS选择器”部分)
盒子模型
每个盒子由内容content、内边距区域padding、边框区域border和外边距区域margin构成;
border属性
border为复合属性,有边框线宽度(px)、边框线种类、颜色等;
若使用某个方向的边框线,则使用boder-方向设置即可;
border-style有多种取值,如下图所示:
padding属性
padding属性表示内边距,最多取4个值;
当4个值时,顺序为上右下左(顺时针);
当3个值时,表示上 左右 下;
当2个值时,表示上下,左右;
当1个值时,表示四个方向;
margin属性
margin属性表示外边距,属性取值顺序同上述的padding;
另外,可以通过margin:0 auto;设置标签居中,0表示上下外边距为0px,而auto则表示左右的外边距要相等,因此为水平居中;
自动内减属性
由于padding、margin、border等的出现,width和height的设置并非整个盒子的宽度和高度;
通过设置box-sizing属性值取值为border-box即可实现自动内减(width和height设置即为盒子的大小);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
background-color: red;
box-sizing: border-box;
padding: 10px;
border: 10px solid black;
width: 300px;
height: 300px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
line-height属性失效问题
当使用line-height属性垂直居中时,其不能设置在font复合属性后面,否则该居中属性失效(若要使用,则使用font-size等属性单独设置font)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>新浪导航</title>
<style>
.box{
height: 40px;
border-top: 3px #ff8500 solid;
border-bottom: 1px #edeef0 solid;
padding: 0px 0px 0px 0px ;
display: block;
}
.box a{
/* width: 80px; */
height: 40px;
display: inline-block;
text-align: center;
line-height: 40px;
font-size: 12px;
text-decoration: none;
padding: 0px 10px;
}
/* line-height不能写在font复合属性前面 */
.box a:hover{
background-color: #edeef0;
color: #ff8400;
}
</style>
</head>
<body>
<div class="box">
<a href="#">新浪导航1111111</a>
<a href="#">新浪导航2</a>
<a href="#">新浪导航3</a>
<a href="#">新浪导航4</a>
</div>
</body>
</html>
清除标签默认样式
通过通配符选择器或并集选择器,清除margin和padding(设置为0);
通过list-style属性设置为none清除ul、ol的列表圆点;
外边距margin问题
(1)垂直布局的块级元素,上下的margin会合并,并取二者的最大值;
(2)具有嵌套关系的块级元素,子元素的margin-top会作用在父级元素上(塌陷现象);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div.f1{
width: 500px;
height: 500px;
background-color: red;
overflow: hidden;
}
div.f2{
width: 300px;
height: 300px;
background-color: blue;
margin-top: 50px;
/* display: inline-block; */
/* 转换为行内块元素也可 */
}
</style>
</head>
<body>
<div class="f1">
<div class="f2">
son
</div>
</div>
</body>
</html>
可以通过以下方式清除塌陷的影响:
给父元素设置border-top/padding-top;
给父元素这是overflower:hidden;
转换为行内块元素;
设置浮动;
伪元素
使用CSS模拟标签,常常用于装饰的图片;
::berfore,在父元素内容的最前面添加一个伪元素;
::after,在父元素内容的最后添加一个伪元素;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.test{
width: 300px;
height: 300px;
background-color: pink;
}
.test::before{
content: '123';
color: red;
}
/* 添加的是行内元素 */
.test::after{
content: '345';
}
</style>
</head>
<body>
<div class="test">
test
</div>
</body>
</html>
必须设置content属性才能生效,且为行内元素;
推荐CSS书写顺序
浮动/display→盒子模型→文字样式;
按照上述内容书写,有利于浏览器进行解析;
网页基础布局方式
布局方式 | 说明 |
---|---|
标准流 | 块元素独占一行(垂直布局)、行内元素/行内块元素一行多个(水平布局) |
浮动 | 垂直布局的块元素变成水平布局 |
定位 | 自由摆放,常用于层叠的情况 |
浮动
浮动元素会脱离标准流,在标准流不占位置(相当于浮动在标准流的上层);
浮动元素比标准流高半个级别,可以覆盖标准流中的元素;
浮动后的标签具备行内块的特点(在一行、宽高会生效);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 100px;
height: 100px;
/* display: inline-block; */
}
.one{
width: 100px;
height: 100px;
background-color: red;
float: left;
margin-top: 50px;
padding-top: 50px;
box-sizing: border-box;
}
.two{
width: 200px;
height: 200px;
background-color: greenyellow;
/* float: right; */
float: left;
margin: 0 auto;
/* 因浮动,不会生效 */
}
.three{
width: 300px;
height: 300px;
background-color: aqua;
}
.test{
width: 500px;
height: 500px;
display: inline-block;
}
img{
width: 300px;
height: 300px;
float: left;
}
</style>
</head>
<body>
<div class="one">one</div>
<div class="two">two</div>
<div class="three">three</div>
<!-- 浏览器解析时,代码换行会产生一个空格 -->
<!-- 浮动之图文环绕 -->
<!-- <br>
<div class="test">
<img src="../2023_08_31/88.jpg" alt="">
白梦妍是白鹿的本名,白鹿是1994年9月23日出生的中国内地女演员和模特。她出生于江苏常州,在2016年7月,白鹿在陆虎单曲《留言》mv里担任女主角,之后在个人首部电视剧《朝歌》中担任女主角而正式出道。2017年,白鹿在古装剧《凤囚凰》中一人分饰两角,同年主演剧版《西游记女儿国》,饰演女儿国国王无双。2018年,凭借《凤囚凰》获得“年度戏剧潜力艺人”奖项。2019年8月6日,主演电视剧《烈火军校》播出。
</div> -->
</body>
</html>
清除浮动的影响
可以设置父标签的高度;
可以通过额外标签清除(在父元素最后加入块元素clear:both);
单伪元素清除法;
双伪元素清除法;
父元素设置overflow:hidden;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.top{
width: 1000px;
/* height: 300px; */
margin: 0 auto;
background-color: pink;
/* overflow: hidden; */
/* 也可清除浮动 */
}
/* 不清除影响,则top的高度为0px */
.bottom{
height: 100px;
background-color: green;
}
.left{
width: 200px;
height: 300px;
float: left;
background-color: grey;
}
.right{
float:right;
width: 700px;
height: 300px;
background-color: blue;
}
.clearfix::after{
content:'';
display: block;
/* 要是块标签,伪元素是行内,需要转换 */
clear:both;
height: 0;
visibility: hidden;
/* 兼容性问题 */
}
/* .clearfix{
clear:both;
} */
/* 在父级最后使用额外的标签,CSS属性clear:both即可 */
</style>
</head>
<body>
<!-- 父子级标签,父级不浮动,子级浮动,后续标签会显示在上面 -->
<div class="top clearfix">
<div class="left"></div>
<div class="right"></div>
<!-- <div class="clearfix"></div> -->
</div>
<div class="bottom">
</div>
</body>
</html>
定位
通过position属性设置定位的方式:
定位方式 | 属性值 |
---|---|
静态定位 | static |
相对定位 | relative |
绝对定位 | absolute |
固定定位 | fixed |
偏移值需要设置两个方向,水平和垂直方向,可以是像素,也可以是百分比:
方向 | 属性名 | 含义 |
---|---|---|
水平 | left | 距离左边的距离 |
水平 | right | 距离右边的距离 |
垂直 | top | 距离上边的距离 |
垂直 | bottom | 距离下边的距离 |
相对定位
相对于自身原有的位置移动,原有的位置不会被占据;
当四个方向属性值都被定义时,以left和top为准;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
/* 相对定位 */
/*
占有原来的位置;
具有原标签的显示模式;
依据原位置改变位置;
都有属性时,以left和top为准;
*/
/* position: relative;
left: 100px;
top: 100px; */
/* 绝对定位 */
/*
有已定位的父级,按照父级为参照物;
否则按照浏览器窗口为参照物;
脱标,不占位置(类似于浮动);
不具备原标签的显示模式→行内块元素显示模式;
*/
position: absolute;
left: 100px;
top: 100px;
background-color: blue;
width: 300px;
height: 300px;
}
/* 父级相对定位,子集绝对定位 */
.div1{
position: relative;
left: 100px;
top: 100px;
width: 300px;
height: 300px;
background-color: red;
}
.div2{
position: absolute;
left: 50px;
top: 50px;
width: 200px;
height: 200px;
background-color: pink;
}
.div3{
position: absolute;
left: 10px;
top: 10px;
width: 100px;
height: 100px;
background-color: greenyellow;
}
</style>
</head>
<body>
<p>1111111111111111111111111111111</p>
<p>2222222222222222222222222222222</p>
<div class="div1">
<div class="div2">
<div class="div3">
</div>
</div>
</div>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
</body>
</html>
绝对定位
相对于非静态定位的父元素定位;
存在已经定位的父级元素则按其为参照物,否则以浏览器窗口为参照物;
常使用父元素相对定位+子元素绝对定位模式
绝对定位的水平居中不能使用margin 0 auto实现,要使用left50%+margin-left width/2实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
position: absolute;
/* 绝对定位的标签不能使用margin:0 auto实现水平居中 */
/* margin: 0 auto; */
/* 参照物的50% */
left: 50%;
/* margin-left: -150px; */
top: 50%;
/* margin-top: -150px; */
transform: translate(-50%,-50%);
/* 向左位移宽度的50%,向上位移高度的50% */
width: 300px;
height: 300px;
background-color: greenyellow;
}
</style>
</head>
<body>
<div class="box">
</div>
</body>
</html>
固定定位
相对于浏览器进行定位移动;
配合方位属性进行定位;
例如,浏览器窗口滑动,该元素不随滑动而移动;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
/* 相对定位 */
/*
占有原来的位置;
具有原标签的显示模式;
依据原位置改变位置;
都有属性时,以left和top为准;
*/
/* position: relative;
left: 100px;
top: 100px; */
/* 绝对定位 */
/*
有已定位的父级,按照父级为参照物;
否则按照浏览器窗口为参照物;
脱标,不占位置(类似于浮动);
不具备原标签的显示模式→行内块元素显示模式;
*/
position: absolute;
left: 100px;
top: 100px;
background-color: blue;
width: 300px;
height: 300px;
}
/* 固定定位 */
/*
固定定位脱标;
改变位置参考浏览器窗口,不随网页滚动而移动;
具备行内块特点,没有内容时需要宽高设置;
*/
.div1{
position: fixed;
left: 100px;
top: 100px;
width: 300px;
height: 300px;
background-color: red;
}
.div2{
position: absolute;
left: 50px;
top: 50px;
width: 200px;
height: 200px;
background-color: pink;
}
.div3{
position: absolute;
left: 10px;
top: 10px;
width: 100px;
height: 100px;
background-color: greenyellow;
}
</style>
</head>
<body>
<p>1111111111111111111111111111111</p>
<p>2222222222222222222222222222222</p>
<div class="div1">
<div class="div2">
<div class="div3">
</div>
</div>
</div>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
<p>3333333333333333333333333333333</p>
<p>4444444444444444444444444444444</p>
</body>
</html>
元素层级关系
标准流<浮动<定位;
相对定位、绝对定位、固定定位默认层级相同;
都属于定位时,在HTML下面的层级更高,但是可以通过z-index属性改变(越大越在上面,默认值为值为0);
对齐方式
对齐方式 | 说明 |
---|---|
vertical-align | 垂直对齐 |
baseline | 基线对齐(默认) |
top | 顶部对齐 |
middle | 中部对齐 |
bottom | 底部对齐 |
浏览器遇到行内和行内块标签时,当做文字处理,使用vertical-align取值为middle即可(较大者);
对内部的图片居中,可以对父元素加text-align属性;
光标类型
通过cursor属性设置光标类型:
取值 | 说明 |
---|---|
default | 箭头(默认值) |
pointer | 小手 |
text | 工字型(选中文字时的样式) |
move | 十字光标 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 200px;
height: 200px;
background-color: greenyellow;
margin: 100px auto;
cursor: pointer;
/*
move 十字型
text 工字型
pointer 手型
*/
}
</style>
</head>
<body>
<div></div>
</body>
</html>
边框圆角
通过border-radius属性,可以改变标签矩形的四角属性;
取值为圆角的半径,单位是px或百分比;
顺时针赋值,左上角开始,没有的取值看对角;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 200px;
height: 200px;
background-color: greenyellow;
margin: 100px auto;
}
.box{
cursor: pointer;
border-radius: 50px;
/*
左上开始,顺时针转动,没有的看对角取值
超过范围时画出的是一个圆
*/
}
.round{
border-radius: 50%;
/* 尺寸的一半即可 */
}
.jiaonang{
height: 100px;
border-radius: 50px;
}
</style>
</head>
<body>
<div class="box"></div>
<div class="round"></div>
<div class="jiaonang"></div>
</body>
</html>
溢出部分显示属性
overflow属性,改变标签内容溢出时的显示模式;
属性取值 | 说明 |
---|---|
visible | 溢出部分可见(默认) |
hidden | 隐藏 |
scroll | 无论是否溢出都显示滚动条 |
auto | 溢出时才显示滚动条 |
元素显示隐藏方式
visibility:hidden,占位隐藏,不从DOM中移除,具有继承性,不能触发事件;
display:none,不占位隐藏,从DOM中移除,不具有继承性,不能触发事件;
overflow:hidden,不占位隐藏(多余的部分被裁剪),不具有继承性;
opacity:0,占位隐藏(使其变得透明),能够触发事件;
精灵图
将多张小图合并为一张大图,合成的大图为精灵图;
精灵图的使用,可以减少服务器发送次数;
常常使用行内标签,如<span>使用精灵图;
使用精灵图的步骤:
(1)创建盒子,和小图尺寸相同(background-size);
(2)精灵图设置为背景图bgi;
(3)修改背景图的位置bgp(background-position);
background复合属性
background:color image repeat position/size(顺序无所谓,但是要有position/size);
其中,bgs可以取值数字px/百分比/contain/cover;
contain,包含,等比例缩放,不会超出盒子的最大,背景可能填不满;
cover,覆盖,等比例缩放,刚好填满盒子没有空格,图片可能显示不全;
盒子阴影
box-shadow属性,控制盒子阴影;
单属性 | 说明 |
---|---|
h-shadow | 水平偏移量(必填,可负) |
v-shadow | 垂直偏移量(必填,可负) |
blur | 模糊程度 |
spread | 阴影扩大 |
color | 阴影颜色 |
inset | 内部阴影 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.box{
width: 300px;
height: 300px;
background-color: greenyellow;
margin: 100px auto;
box-shadow: 5px 10px 20px 10px black;
/* 外阴影不能写outset 默认值即可 */
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
transition属性
transition属性表示过渡,取值为(要过渡的属性 过渡时长),常常配合:link、:hover等伪类选择器使用(但不是在其内部添加);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div.box{
width: 200px;
height: 200px;
background-color: greenyellow;
/* 大小要变大,鼠标悬停时 1秒内从200 200变化至400 400 */
transition: width 1s,height 1s,background-color 1s;
/* 可以用all 时间 */
}
.box:hover{
width: 400px;
height: 400px;
background-color: blue;
}
</style>
</head>
<body>
<div class="box"></div>
</body>
</html>
骨架标签
→HTML5(告知浏览器HTML的版本);<html lang=”xx”>,网页使用的语言,zh-CN→简体中文;
<meta charset=”xx”>,网页使用的字符编码;
<meta name=“viewport” content=“width=device-width, initial-scale=1.0”> 移动端网页兼容性;
SEO
SEO,搜索引擎优化,令网站在搜索引擎中排名更靠前;
有竞价方式、html后缀、标签语义化等常见形式;
标签 | 说明 |
---|---|
<title> | 网页标题标签 |
<meta name=”description” content=”xxx”> | 网页描述标签 |
<meta name=”keywords” content=”xxx”> | 网页关键词标签 |
icon
icon类似于网页的logo:
通过<link>标签可以引入icon:
<link rel="short icon" href="url" type="image/x-icon">