1、让网页更加丰富多彩,布局更加灵活自如
2、让HTML从样式中脱离,实现了HTML专注做结构呈现,样式交给css。实现了结构和样式相分离
概念:css通常称为css样式表或者层叠样式表、级联样式表
作用:
主要用于设置HTML页面中的文本内容 (字体、大小、对齐方式等)、图片的外形(宽高、边框、边距)以及版面布局和外观显示样式
/**/
快捷键ctrl+/
css书写位置
对当前行标签起效
概念:
行内样式
<标签名 style=“属性1:属性值1;属性2:属性值2;”>标签名>
例子
<h1 style="color:pink;font-size:18px;">h1>
对当前页面起效
<head>
<style type="text/css">
选择器{
属性1:属性值;
属性2:属性值;
}
head>
例:
<head>
<style type="text/css">
h2{
color:green;
font-size:20px;
}
h4{
color:purple;
font-size:10px;
}
head>
概念:称链入式
将所有样式放在一个或多个css外部样式表文件中
通过link标签将外部样式表链接到HTML文档中
基本语法如下
<head>
<link rel="stylesheet" type="text/css" href="css文件url"/>
head>
注意:css文件可以被多个html文件共享 type可省略
样式表 | 优点 | 缺点 | 使用情况 | 控制范围 |
---|---|---|---|---|
行内样式 | 书写方便,权重高 | 没有实现样式和结构相分离 | 较少 | 一个标签 |
内部样式 | 部分结构和样式像分离 | 没有彻底分离 | 较多 | 控制一个页面 |
外部样式 | 完全实现结构和样式相分离 | 需要引入 | 最多,强烈推荐 | 控制整个站点 |
找到特定的HTML页面元素,其实就是选择标签的
以标签名作为选择器选择对应标签
可以把一类标签全选中
<p class="">p>
.类名{
属性:属性值;
}
可以选择一个或多个class值相同的标签
类选择器的特殊用法
给标签多个类名,方便标签选择多个样式,同时避免了不同选择器中相同样式的重复
语法:
<span class="blue font100">span>
用空格隔开两个类名
id选择器使用#标识后面紧跟id名
其基本语法格式如下
id选择器
#id{属性:属性值;}
标签
<p id="id名">p>
元素的id值是唯一的,只能对应域文档的某一个具体的元素
用法与类选择器基本相同
如同人可以重名也就是class,而id如同身份证对每个标签是唯一的
*表示所有标签
*{
属性:属性值;
}
会降低页面响应速度 不建议随便使用
选择器 | 作用 | 缺点 | 使用情况 | 用法 |
---|---|---|---|---|
标签选择器 | 可以选出所有相同的标签 | 不能差异化选择 | 较多 | p{color:red;} |
类选择器 | 可以选出1个或者多个标签 | 可以根据需求选择 | 非常多 | .nav{color:red;} |
id选择器 | 一次只能选择一个标签 | 只能使用一次 | 不推荐使用 | #nav{color:red;} |
通配符选择器 | 选择所有标签 | 选择的太多,有部分不需要 | 不推荐使用 | *{color:red;} |
记忆:<标签 类 id>
相对长度单位 | 说明 |
---|---|
em | 1em相当于当前对象的一个字体大小 |
px | 像素 最常用推荐使用 |
不同浏览器默认的字体大小不一样我们可以指定body的font-size=16px;
设置字体种类
微软雅黑、宋体、黑体等
p{
font-size:Arial ,"Microsoft YaHei","黑体";
}
以上同时指定多个字体,中间以逗号隔开,表示如果浏览器不支持第一个字体则会选择后面合适的字体,否则以电脑默认字体
中文字体需要加引号,英文字体一般不需要加。
①在html中如何将字体加粗我们可以使用b和strong标签是文本加粗。
②可以使用css来实现,但css是没有语义的
属性值 | 描述 |
---|---|
normal | 默认值 |
bold | 定义粗体 |
100~900 | 400等同于normal,而700等同于bold |
推荐使用数字
让粗体不加粗:font-weight:normal;
或者 font-weight:400;
属性 | 描述 |
---|---|
italic | 倾斜 |
normal | 默认标准字体样式 |
设置normal使倾斜字体正过来
.title{
/*font:font-style font-weight font-size【/line-height】 font-family;*/
font:italic 700 20px "微软雅黑";
}
必须严格按照font综合写法的顺序不能颠倒
必须保留weight和family属性其余可以省略
属性 | 属性值 | 描述 |
---|---|---|
font-style | italic|normal | 字体风格,倾斜或正常 |
font-weight | normal|bold|100~900 | 字体粗细 |
font-size | px或者em | 字体大小 |
font-family | 字体名称 | 字体种类 |
综合写法font:font-style font-weight font-size【/line-height】 font-family;
记忆:SWSF 上午十分
GB2312 UTF-8
每种字体都对应着一个unicode编码,可以上网查询以获得其编码
为什么用unicode?
在css中设置字体可以直接写中文,但是文件编码不匹配时会产生乱码的错误,而且xp系统不支持类似微软雅黑的中文。但是unicode编码可以避免这些错误
属性 | 描述 | 值 |
---|---|---|
color | 颜色 | 1、常用十六进制比如#fff 2、rgb值如RGB(255,0,0) 3、颜色名称 如red |
line-height | 控制行与行之间的距离 | 行间距包括上间距文本高度和下间距组成 |
text-align | 文字水平对齐方式 | 1、justify每行被展开为宽度相等。左右外边距对齐 2、right右对齐 3、center居中4、left左对齐 |
text-indent | 首行缩进 | 常用于段落首行缩进2个字的距离 值为2em |
text-decoration | 文本修饰 | 1、none用来删除文本修饰 ,如删除下划线 2、underline下划线 3、overline上划线 |
f12打开开发者工具
ctrl+0恢复浏览器大小
上箭头和下箭头改变px值
开发者工具中可以修改,但是不会改变原文件适合调试数值更加直观
前身为zen coding 使用缩写来提高html/css编写速度 VScode已经集成该语法
emmet语法生成html标签
1、生成标签 输入标签名加tab键可以一键生成标签
2、如果想生成多个相同标签可以标签名*4按tab生成4个
3、父子级关系可以用>比如ul>li 可以用ul>li*3生成三个li
4、并列关系可以用+ 比如div+p
5、.class名可以生成对应class名的div标签
#id名类似
当然可以用 标签名.class可以生成任意标签 #类似
6、.class名$*数量 可以生成自增符号的多个div标签 $为自增符号
7、标签名{文字内容}按tab可以生成div标签并包含文字内容
emmet语法生成css样式
1、tac生成text-align:center;
2、w2+tab生成width:2px;
等
快速格式化代码
shift+alt+f
复合选择器建立在基础选择器之上
复合选择器由多个基础选择器通过不同方式组合而成
又称为包含选择器 可以选择父元素里的子元素
例子:修改ol中li的样式
ol li{
color:pink;
}
语法:
元素1 元素2 { 属性:属性名}
元素2为元素1的后代
中间一定用空格隔开
元素3类似一层层下去
只能选择最近的一级儿子元素
语法
元素1>元素2{
属性:属性值
}
元素1和2必然是父子关系
可以选择多组标签定义相同样式
语法:
元素1,元素2{
属性:属性值
}
用逗号分隔多个任何形式的选择器
选择对应类名的元素
语法:
元素.class名{属性:属性值}
选择器 | 描述 |
---|---|
a:link | 选择所有未被访问的链接 |
a:visited | 选择所有已被访问的链接 |
a:hover | 选择鼠标指针位于其上的链接 |
a:active | 选择活动链接(鼠标按下未弹起) |
顺序尽量不要颠倒 按照lvha顺序不然会出错
记忆:lv包包非常hao
什么是标签的显示模式?
标签以什么方式进行显示,比如div独占一行 span则一行可放多个
分类:
HTML标签一般分为块标签和行内标签两种类型,也称为块元素和行内元素
①块级元素block
主要用于布局
例:h、p 、div、ul、ol、dl、li
1】独占一行
2】高度宽度、内外边距都可控制
3】宽度默认是容器的100%,可以用width设置
4】是一个容器及盒子、里面可以放行内或者块级元素
注意:p内不能放块级元素 特别是div
p h dt里面尽量不要放块元素
background-color可以设置其背景色
②行内元素inline
主要用于包裹文字
1】一行可以有多个元素
2】高宽直接设置是无效的
3】默认宽度就是它本身内容的宽度
4】行内元素只能容纳文本或其它行内元素
注意:
链接里不能再放链接a
特殊情况a里面也可以放块级元素,但a最好转为块级元素
③行内块元素inline-block
兼具块元素和行内元素的特点
img input td
1】和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙,一行可以显示多个
2】默认宽度就是本身内容宽度
3】高度、行高、外边距以及内边距都可以控制
元素模式 | 元素排列 | 设置样式 | 默认宽度 | 包含 |
---|---|---|---|---|
块级元素 | 一行只能放一个块级元素 | 可以设置宽度高度 | 容器的100% | 容器级可以包含任何标签 |
行内元素 | 一行可以放多个行内元素 | 不可以直接设置宽度高度 | 它本身内容的宽度 | 容纳文本或则其他行内元素 |
行内块元素 | 一行放多个行内块元素 | 可以设置宽度和高度 | 它本身内容的宽度 |
块转行内:display:inline;
行内转块:display:block;
块、行转为行内块:display:inline-block
行高和高度的关系
1、如果行高等于高度 文字会垂直居中
2、如果行高大于高度,文字会偏下
3、如果行高小于高度,文字会偏上
语法:background-color:颜色
transparent透明色
background-image:url(文件路径);
background-repeat:
值:
repeat:背景图像在纵向和横向平铺 默认选项
no-repeat:不平铺
repeat-x:横向平铺
repeat-y:纵向平铺
background-position:length或position
值:
length :百分数或由浮点数和单位标识符组成的值
position:top|center|bottom|left|right组成
例如右上角为right top;左下角为left bottom;
水平垂直居中: center center
网页中x轴往右 y轴往下
10px 50px 表示x=10px y=50px对背景图进行精确调整
网页超大背景图定位的css
body{
background-image:url(img.jpg);
background-repeat:no-repeat;
baacground-position:center top;
}
案例:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<style>
.icon {
width: 150px;
height: 35px;
background-repeat: no-repeat;
background-position: 10px center;
}
style>
head>
<body>
<div class="icon">div>
body>
html>
background-attachment:
值
scroll 背景随对象内容滚动
fixed 背景图像固定 有滚动条背景图也不随内容移动
background属性的顺序比较随意
可以参照以下顺序写,也可以调换顺序
background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置;
background:rgba(0,0,0,透明度)
透明度在0-1之间 越小越透明 可以省略小数点前的0
属性 | 属性值 | 描述 |
---|---|---|
background-color | 十六进制,rgb,名称 | 背景色 |
background-image | url(路径) | 背景图 |
background-repeat | repeat ,no-repeat,repeat-x,repeat-y | 背景图平铺 |
background-attachment | scroll|fixed | 背景附着 |
background-position | top|bottom|center|right|left或者坐标值 第一参数为x第二参数为y | 背景图定位 |
所谓层叠性指的是后面相同样式会覆盖前面样式。样式不冲突就不会层叠(覆盖)
冲突就近原则
子标签会继承父标签的某些样式、如文本颜色和字号
想要设置一个可继承的属性,只需将它应用于父元素即可
子元素可以继承父元素的样式:
text-、font-、line-这些元素开头的可以继承、以及color属性
div{
color:red;
}
div{
color:pink;
}
div{
color:red;
}
.one{
color:pink;
}
one为div的class名
以上为层叠性,采取就近原则
选择器不同则会出现优先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ZmiYYVU-1670653461116)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129113408086.png)]
!important符>>>行内style>id>class>标签名>继承
div{
color:pink !important;
}
!important添加在样式后面;
交集选择器、后代选择器会出现权重叠加
.nav a 权重0,0,1,0+0,0,0,1=0,0,1,1
div ul li 权重0,0,0,1+0,0,0,1+0,0,0,1=0,0,0,3
谁大谁优先
0,0,0,5+0,0,0,5=0,0,0,10叠加不进位
相对子元素来说继承的权重是0,无论继承采取的是什么选择器
网页布局本质
1、设置盒子
2、将元素放入盒子
盒子:装内容的容器
div为最常用的盒子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ata3x978-1670653461117)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129115903163.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ux0JV4oV-1670653461117)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129120130974.png)]
boder-color 定义颜色
boder-width 定义边框粗细,单位px
boder-style 定义边框样式 默认none没有边框,常用dotted点线|dashed虚线|solid实线
边框综合设置
boder:border-width||boder-style||boder-color
这是常见的综合写法,但是其实没有顺序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HHjcgk08-1670653461117)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129120936123.png)]
input table等可以用border更好看
border-collapse:collapse;表示重叠边框,解决边框重叠变粗问题
table,td,th{
border-collapse:collapse;
boder:1px solid deeppink;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r52D1tDn-1670653461118)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129151545611.png)]
注意:内边距会导致盒子对应尺度变大
padding简写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gpbbKYxH-1670653461118)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129152012695.png)]
例:
padding:20px;/*内边距20px*/
padding:10px 20px;/*上下10px左右20px*/
padding:10px 20px 30px;/*上10左右20下30*/
padding:10px 20px 30px 40px;/*上右下左顺时针*/
盒子实际大小=内容的宽度和高度+内边距+边框
解决办法:
改变内容宽度
1、盒子没有宽度则padding不会撑开盒子(height一样)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tDkZ5wq1-1670653461119)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129154515193.png)]
使用方法和padding类似
可以用于实现网页大小无论如何都能使网页主体居中
须满足两个条件
1、盒子必须指定宽度
2、左右外边距设置为auto
法一、
margin-left:auto;
margin-right:auto;
法二、
margin:auto;
法三、
margin:0 auto;
1、盒子内文字水平居中为text-align:center;
行内元素和行内块元素也可以因此居中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ruNTOMJS-1670653461119)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129155554653.png)]
img可以用padding调整位置
但是背景图只能用background-position
浏览器会默认给元素一个内外边距
为了方便布局一般都先设置以下代码
*{
padding:0;/*清除内边距*/
margin:0;/*清除外边距*/
}
行内元素最好只设置左右外边距,不设置上下内外边距
1、相邻元素垂直外边距合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u1HC3gGp-1670653461119)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129160749089.png)]
2.塌陷(嵌套关系的垂直外边距合并)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NibM7NN0-1670653461120)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129161511464.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5o34PDRE-1670653461120)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129161818604.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLcW1NkP-1670653461120)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129162143996.png)]
border-radius:像素值或百分比
圆:值为方框宽度一半或者直接设为50%
p{
width:100px;
height:20px;
background-color:red;
font-size:12px;
color:#fff;
text-align:center;
line-height:20px;
border-radius:10px;
}
矩形圆角边框:只需要高度的一半就行,而且不能用百分比,要精确值+单位
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kqUKA7PC-1670653461121)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221129171321867.png)]
1】普通流
块级元素独占一行,自上而下排列
行内元素从左到右顺序排列,遇到父元素边缘自动换行
2】浮动
让盒子在普通流中浮起来,主要作用让多个块级盒子一行显示
元素的浮动是指设置了浮动属性的元素会脱离标准普通流的控制,移动到指定位置
3】定位
将盒子定在浏览器的某一位置
让多个盒子(div)水平排列一行
行内块也能实现,但是中间会有空白缝隙难以去除
最早是用于控制图片,实现文字环绕图片效果
选择器{float:属性值;}
属性值 | 描述 |
---|---|
none | 元素不浮动 |
left | 元素向左浮动 |
right | 元素向右浮动 |
漂浮在普通流上面
浮动的盒子会把自己原来的位置给下面普通标准的盒子,也就是漏给下面盒子
特性:float属性会改变display属性
变成行内块元素 且浮动元素中间没有缝隙,和真正的行内块有些区别
当父级盒子装不下一行内的盒子则右边的盒子会自动到下一行,所以要重视宽度
浮动和标准流的父盒子搭配
浮动是会脱标的,会影响下面的标准流盒子,因此我们一般将浮动盒子放在父盒子中
子元素浮动是参照父盒子来对齐的
不会超过父元素边框也不会超过内边距
在一个父级盒子中,如果前一个兄弟盒子是:
1、浮动的,那么当前盒子会与前一个盒子的顶部对齐
2、普通流的,那么当前浮动盒子会显示在前一个兄弟盒子的下侧;
浮动盒子只会影响当前盒子或后面的盒子,不会影响前面的标准流
很多情况下,父盒子设置高度不方便,子盒子浮动就不占有位置,最后父级盒子的高度为0,就影响了下面的标准盒子流
很多情况下,子盒子有多少内容就显示多少自动撑开父盒子最合理
清除浮动不是真的把浮动效果清除了而是清除了浮动带来的以上影响
即影响下方标准盒子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmmbE1bP-1670653461121)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221130154256390.png)]
清除浮动主要是为了解决父级元素因为浮动引起的内部高度为0的问题。清除浮动之后父级就会根据子盒子自动检测高度。父级有了高度,就不会影响下面的标准流。
1】clear语法:
clear:属性值;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S9ArxQgO-1670653461122)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221130154856127.png)]
工作中几乎只用both
2】额外标签法
在最后一个浮动元素末尾添加空标签
<div class="clear" style="clear:both;"><div>
3】父级添加overflow属性方法
可以给父级元素添加overflow为hidden|auto|scroll都可以实现
代码简洁,但是容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素怒。要慎重使用
4】使用after伪元素清除浮动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSdHnI2D-1670653461122)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221130155947910.png)]
*zoom:1;ie6,7专门清除浮动的样式
父级元素调用图片中的样式即可解决
4】双伪元素清除浮动
.clearfix:before,
.clearfix:after{
content:"";
display:table;
}
.clearfix:after{
clear:both;
}
.clearfix{
*zoom:1;
}
浮动元素的父级元素调用
满足下面三种情况需要清除
1、父级元素没有高度
2、子盒子浮动
3、影响下面布局
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2Xoa3pT-1670653461123)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221130194932892.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-evXVrbL0-1670653461123)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221130195009983.png)]
cutterman是运行在ps中的插件,能够自动将你需要的图层进行输出,以替代传统的手工导出web格式以及使用切片工具进行挨个切图的繁琐流程。它支持各种各样的图片尺寸、格式、形态输出。
官网:http://www.cutterman.cn
需要ps为完整版现在需要付费了
psd源文件
ps切图+vscode+chrome
2、创建study文件夹
3、study内新建images、index.html首页,style.css样式文件
4、link链接样式表,用清除内外边距样式测试是否成功
1、布局属性:display/position/float/clear/visibility/overflow
2、自身属性
width/height/margin/padding/border/background
3、文本属性
color/font/text-decoration/text-align/vertical-align/white-space/break-word
4、其它属性css3
content/cusor/boder-radius/box-shadow/text-shadow/background:linear-gradient等
1、确定页面的可视区(版心)
2、先行后列
3、先结构后样式
4、运用盒子模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QlXnEJTt-1670653461123)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221201103323584.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yTrGtfN2-1670653461124)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221201111855561.png)]
将盒子定在某一位置,自由的漂浮在其它盒子之上
定位=定位模式+边偏移
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJbWC1vy-1670653461124)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202120839126.png)]
选择器{position:属性值;}
值 | 语义 |
---|---|
static | 静态定位 |
relative | 相对定位 |
absolute | 绝对定位 |
fixed | 固定定位 |
元素默认定位方式,无定位的意思相当于none
按照标准流摆放位置,没有边偏移
布局基本不用
例:
div{
position:relative;
top:100px;
left:100px;
}
相对定位:相对于原来在标准流的位置(即去掉定位属性的位置)上进行偏移
特性:与浮动不同,它原先的位置继续占有,后面的盒子仍然以原来标准流的方式对待他原先位置
绝对定位是元素以带有定位的父级元素来移动位置
.father{
width:350px;
height:350px;
background-color:pink;
margin:100px;
position:relative;
}
.son{
width:200px;
height:200px;
background-color:purple;
margin-left:100px;
position:absolute;
top:50px;
left:50px;
}
特性:
1、完全脱标-完全不占位置
2、父级元素没有定位,则以浏览器为准定位
.father{
width:350px;
height:350px;
background-color:pink;
margin:100px;
}
.son{
width:200px;
height:200px;
background-color:purple;
margin-left:100px;
position:absolute;
top:50px;
left:50px;
}
注意:父级元素不一定是上一层的也可以是爷爷等祖先级
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apYySXII-1670653461125)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202122935585.png)]
.yeye{
width:500px;
height:500px;
background-color:skyblue;
position:relative;
}
.father{
width:350px;
height:350px;
background-color:pink;
margin:100px;
}
.son{
width:200px;
height:200px;
background-color:purple;
margin-left:100px;
position:absolute;
top:50px;
left:50px;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tk3g4NhH-1670653461126)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202122919516.png)]
注意:绝对定位的盒子不占有位置
口诀:
子绝父相-子绝对定位,父相对定位
因为绝对定位不占有位置,父级用绝对定位就会引起页面布局混乱
固定定位是绝对定位的一种特殊形式
1、完全脱标–完全不占位置
2、只认浏览器的可视窗口–浏览器可视窗口+边偏移 来设置元素的位置
注意:绝对定位/固定定位的盒子不能通过设置margin设置水平居中
绝对定位时想要实现水平居中可以这样设置:
1、left:50% 让盒子的左侧移动到父级元素的水平居中距离
2、margin-left:-60px;让盒子向左移动自身宽度的一半
.son{
width:120px;
position:absolute;
left:50%;
margin-left:-60px;
}
垂直居中也同理
在使用定位布局时可能会出现盒子重叠的情况
遵循后来者居上的规则
此属性可以改变盒子的堆叠顺序
注意:z-index只能用于相对定位、绝对定位和固定定位元素,其它标准流和浮动、静态定位无效
绝对定位和固定定位和浮动一样改变为行内块元素
行内块不给宽度就是默认宽度,可以设置高宽
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yj3AD4aS-1670653461126)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202140249327.png)]
目的:让一个元素在页面中消失但是不在文档源代码中删除
常用display,visibility使用较少
display:none 隐藏对象
特点:隐藏元素并不保留位置
block值除了转为块级对象外还有显示元素的意思
值 | 描述 |
---|---|
inherit | 继承上一个父对象的可见性 |
visible | 对象可视 |
hidden | 对象隐藏 |
特点:可以隐藏元素,但是保留位置
对超出的部分内容进行怎样显示
属性值 | 描述 |
---|---|
visible | 超出部分正常显示,不剪切内容也不添加滚动条**(默认)** |
hidden | 不显示超过对象尺寸的内容,超出的部分隐藏掉 |
scroll | 不管超出内容否,总是显示滚动条,一般不用不好看 |
auto | 超出自动显示滚动条,不超出不显示滚动条,不好看一般不用 |
更改一些用户操作样式,以便提高更好的用户体验
属性值 | 描述 |
---|---|
defualt | 默认 |
pointer | 小手 |
move | 移动 |
text | 文本 |
not-allowed | 禁止 |
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBFK3HNn-1670653461126)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202151251041.png)]
用于绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用
outline:outline-color||outline-style||outline-width
但是我们都不关心可以设置多少,我们平时都是去掉的
最直接的写法是outline:0;或者outline:none;
常在css开头初始化为outline:0;
因为轮廓线比较丑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CVjmRuTy-1670653461127)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202151200219.png)]
在实际开发中我们的文本域右下角是不可以拖拽的
<tecxtarea style="resize:none;">tecxtarea>
vertical-align:baseline|top|middle|bottom
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sgt5qKEx-1670653461127)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202152044415.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-idpk1rLj-1670653461128)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202152137178.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FjzXbjj7-1670653461128)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202152338152.png)]
原因:默认基线对齐
解决办法:
img设置
vertical-align:bottom;或者middle、top等只要不基线对齐就行
或者给img添加display:block;转为块级元素就不会存在问题了
三部曲
/*1、先强制一行内显示文本*/
white-space:nowrap;
/*2、超出部分隐藏*/
overflow:hidden;
/*3、文字用省略号替代超出部分*/
text-overflow:ellipsis;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ke1lkhkw-1670653461129)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202153748345.png)]
为了有效的减少服务器接受和发送请求的次数,提高页面加载速度
实则将多长图片整合到一张大图
然而各个网页元素通常只需要精灵图中不同位置的某个小图,需要精确定位到精灵图中的某一小图。
这样只需要向服务器请求一次
background-position配合盒子尺寸来部分显示大图中的完整图标
也就是用background-position定位到小图的位置即可
将背景图像整合到一张大图
一般都是小的背景图,不放插图,且竖着排列摆放图片,中间适当留有空隙
为了使各种特殊形状的背景能够自适应元素中文本内容的多少,出现了css滑动门技术,它从新的角度构建了页面,使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本内容,可用性更强。
<a ><span>span>a>
a设置左侧背景
span设置右侧背景
因为滑动块左右推拉,更文字内容宽度有关所以设置为行内块
a{
display:inline-block;
height:33px;
background:url() norepeat;
padding-left:15px;
color:#fff;
}
a span{
display:inline-block;
height:33px;
background:url() no-repeat right top;
}
总结
1、a设置背景左侧,padding撑开合适宽度
2、span色湖之背景右侧,padding撑开合适宽度,剩下由文字继续撑开宽度
3、之所以a包含span就是因为整个导航都是可以点击的
1】负边距+定位:水平垂直居中
即前面提到的,一个绝对定位的盒子利用50%的父级盒子,然后往左走自己宽度的一半就可以实现水平居中,垂直居中同理
2】压住盒子相邻边框
border:1px solid #ccc;
margin-left:-1px;
这样两个紧贴的相邻边框可以合并为一条也就不会显得粗
缺点:后面的盒子会压住前面的盒子边框会导致前面边框显示不出,这时用hover就会有问题
解决缺点:利用相对定位,在hover时用相对定位可以把边框到上层,若其它边框元素也为相对定位,则可以再利用z-index解决
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JroF7zil-1670653461129)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202165436738.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jqTcuAOs-1670653461129)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202165513240.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1kgLrDp4-1670653461130)(C:\Users\ZYJ\AppData\Roaming\Typora\typora-user-images\image-20221202165544322.png)]
html{
filter:grayscale(1);
}
rflow:hidden;
/3、文字用省略号替代超出部分/
text-overflow:ellipsis;
+ white-space:normal默认处理方式|nowrap强制一行显示直到文本结束或者遇到br才换行;
+ text-overflow:clip不显示省略标记,简单裁剪|elipsis当对象内文本溢出时显示省略标记;
## 5、css精灵技术sprite-重点
### 5.1为什么需要精灵技术
[外链图片转存中...(img-Ke1lkhkw-1670653461129)]
为了有效的减少服务器接受和发送请求的次数,提高页面加载速度
### 5.2精灵技术讲解
实则将多长图片整合到一张大图
然而各个网页元素通常只需要精灵图中不同位置的某个小图,需要精确定位到精灵图中的某一小图。
这样只需要向服务器请求一次
background-position配合盒子尺寸来部分显示大图中的完整图标
也就是用background-position定位到小图的位置即可
### 5.3制作精灵图-了解
将背景图像整合到一张大图
一般都是小的背景图,不放插图,且竖着排列摆放图片,中间适当留有空隙
## 6、滑动门
为了使各种特殊形状的背景能够自适应元素中文本内容的多少,出现了css滑动门技术,它从新的角度构建了页面,使各种特殊形状的背景能够自由拉伸滑动,以适应元素内部的文本内容,可用性更强。
```html
a设置左侧背景
span设置右侧背景
因为滑动块左右推拉,更文字内容宽度有关所以设置为行内块
a{
display:inline-block;
height:33px;
background:url() norepeat;
padding-left:15px;
color:#fff;
}
a span{
display:inline-block;
height:33px;
background:url() no-repeat right top;
}
总结
1、a设置背景左侧,padding撑开合适宽度
2、span色湖之背景右侧,padding撑开合适宽度,剩下由文字继续撑开宽度
3、之所以a包含span就是因为整个导航都是可以点击的
1】负边距+定位:水平垂直居中
即前面提到的,一个绝对定位的盒子利用50%的父级盒子,然后往左走自己宽度的一半就可以实现水平居中,垂直居中同理
2】压住盒子相邻边框
border:1px solid #ccc;
margin-left:-1px;
这样两个紧贴的相邻边框可以合并为一条也就不会显得粗
缺点:后面的盒子会压住前面的盒子边框会导致前面边框显示不出,这时用hover就会有问题
解决缺点:利用相对定位,在hover时用相对定位可以把边框到上层,若其它边框元素也为相对定位,则可以再利用z-index解决
[外链图片转存中…(img-JroF7zil-1670653461129)]
[外链图片转存中…(img-jqTcuAOs-1670653461129)]
[外链图片转存中…(img-1kgLrDp4-1670653461130)]
html{
filter:grayscale(1);
}