CSS简介:
css的主要作用场景就是美化网页,布局页面的。
文章目录
1.1、HTML的局限性
说起html,这其实是个非常单纯的家伙,他只关注内容的语义。比如
表明这是一个大标题,
表明这是一个段落,表明这儿有一个图片,表示此处有链接。
1.2、CSS-网页的美容师
CSS是层叠样式表(Cascading Style Sheets)的简称。 有时候我们也会称为CSS样式表或级联样式表。
CSS也是一种标记语言
CSS主要用于设置html页面中文本内容(字体,大小,对齐方式等)、图片的外形(宽高,边框样式,边距等)以及版面的布局和外观显示样式。
CSS让我们的网页更加丰富多彩,布局更加灵活自如。简单理解:CSS可以美化html,让html更漂亮,让页面布局更加简单。
CSS最大的价值:由html专注去做结构呈现,样式交给CSS,即结构(HTML)与样式(CSS)相分离。
1.3、CSS语法规范:
CSS规则由两个主要的部分区域:选择器以及一条或多条声明。
h1{color:red; font-size:25px;}
h1选择器 color:red;声明 color属性 red值
1.4、CSS代码风格
以下代码书写风格不是强制规范,而是符合实际开发书写方式。
1,样式格式书写(推荐展开格式)
2,样式大小写(推荐用小写)
3,空格规范【属性值前面,冒号后面,保留一个空格。 选择器(标签)和大括号中间保留空格】
2.1、CSS选择器的作用
选择器就是根据不同需求把不同的标签选出来这就是选择器的作用。简单的说,就是选择标签用的。
(选标签,为标签做样式)
2.2选择器的分类
选择器分为基础选择器和符合选择器两大类。
1、基础选择器是由单个选择器构成的。
2、基础选择器包括:标签选择器、类选择器、id选择器和通配符选择器。
标签选择器:
可以把某一类标签全部选出来,比如所有的
标签名 {属性1: 属性值1;...}
优点:把页面中同种类型的标签统一设置格式。 缺点:不能设计差异化的样式,只能选择全部的当前标签。
类选择器:
如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器。类选择器在HTML属性表示,在CSS中,类选择器以一个点"."号表示。
样式点定义 、 结构类(class)调用、 一个或多个、 开发最常用。
.类名 {属性1: 属性值1;... }
类命名规则:
头:header
内容:content/container
尾:footer
导航:nav
侧栏:sidebar
栏目:column
页面外围控制整体布局宽度:wrapper
左右中:left right center
登录条:loginbar
标志:logo
广告:banner
页面主体:main
热点:hot
新闻:news
下载:download
子导航:subnav
菜单:menu
子菜单:submenu
搜索:search
友情链接:friendlink
页脚:footer
滚动:scroll
标签页:tab
文章列表:list
提示信息:msg
小技巧:tips
栏目标题:title
加入:joinus
指南:guild
服务:service
注册:regsiter
状态:status
投票:vote
合作伙伴:partner
类选择器-多类名:我们可以给一个标签指定多个类名,从而达到更多的选择目的。这些类名都可以选出这个标签。
1、多类名使用方式:<div class="类名1 类名2 ...">猴子</div>
(多个类名中间必须使用空格)
2、多类名开发中使用场景:可以把一些标签元素相同的样式(共同的部分)放到一个类里面。这些表签都可以调用这个公共类,然后再调用自己独有的类。
id选择器
#类名 { }
id选择器可以为标签有特定id的HTML元素指定特定的样式。
HTML元素以id属性来设置id选择器。CSS中id选择器以"#"来定义。
id选择器口诀:样式#定义 结构id调用,只能调用一次,别人切勿使用。经常和JavaScript搭配使用
通配符选择器
在CSS中,通配符选择器使用"*"定义,它表示选取页面中所有元素(标签)。
*{属性1: 属性值1;...}
1、通配符选择器不需要调用,自动就给所有元素使用样式
2、特殊情况才使用,后面讲解使用场景(以下是清除所有的元素标签的内外边距,后期讲)
*{margin: 0; padding: 0; }
3.1CSS字体属性
CSS Fonts(字体)属性用于定义字体系列、大小、粗细、和文字样式、(如斜体)。
字体系列:
CSS使用font-family属性定义文本的字体系列。
p {font-family: "微软雅黑";}
div {font-family: Arial,"Microsoft yahei","微软雅黑";}
- 各种字体之间必须使用英文讲台下的逗号隔开
- 一般情况下,如果有空格隔开的多个单词组成的字体,加引号。
- 尽量使用系统默认的自带字体,保证在任何用户的浏览器中都能正确显示。
- 最常见的几个字体: body {font-family:‘Microsoft YaHei’,tahoma,arial,‘Hiragino Sans GB’;}
字体大小:
CSS使用font-size属性定义字体大小。
- px(像素)大小是我们网页的最常用单位
- 谷歌浏览器默认文字大小为16px
- 不同浏览器可能默认显示的字号大小不一致,我们尽量给一个明确值大小,不要默认大小
- 可以给body指定整个页面文字大小
字体粗细:
CSS使用font-weight属性设置文字字体的粗细。
normal(默认值)bold(定义粗体) 100~900(400等同于normal,而700等同于bold 。 注意这个字后面不跟单位)
文字样式:
CSS是用font-style属性设置文本的风格。
属性值 | 作用 |
---|---|
normal | 默认值,浏览器会显示标准的字体样式 font-style: normal; |
italic | 浏览器会显示斜体的字体样式。 |
字体复合属性:
字体属性可以把以上文字样式综合来写,这样可以节约代码。
使用font属性时,必须按上面语法格式中的顺序写,不能更换顺序,并且各个属性间以空格隔开。
不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性值将不起作用。
body {
font: font-style font-weight font-size/line-height font-family;
即替换为 ( font: italic 700 16px 'Microsoft YaHei'; )
}
3.2CSS的文本属性
CSS Text(文本)属性可定义为文本的外观,比如文本的颜色、对齐文本、装饰文本、文本缩进、行间距等。
文本颜色:
color属性用于定义文本的颜色。
属性表示 | 属性值 |
---|---|
预定义的颜色值 | red,green,blue… |
十六进制 | #FFoooo,#FF6600,#29D794 |
RGB代码 | rgba(255,0,0) 或 rgba(100%,0%,0%) |
对齐文本:
text-align属性用于设置元素内文本内容的水平对齐方式。(三种对齐方式:left right center)
装饰文本:
text-decoration 属性规定添加到文本的装饰。可以给文本添加下划线、删除线、上划线等。
属性值 | 描述 |
---|---|
none | 默认。没有装饰线(最常用) |
underline | 下划线。 链接a 自带下划线(常用) |
overline | 上划线。(几乎不用) |
line-through | 删除线。(不常用) |
文本缩进:
text-indent
属性用来指定文本的第一行的缩进,通常是将段落的首行缩进。
p {text-indent: 20px/2em}
2em代表是缩进当前元素2个文字的大小距离(相对单位)
行间距:
line-height属性用于设置行间的距离(行高)。可以控制文字行与行之间的距离。
3.3CSS的引入方式
按照CSS样式书写的位置(或者引入的方式),CSS样式表可以分为三大类:
1、行内样式表(行内式) 2、内部样式表(嵌入式) 3、外部样式表(链接式)
内部样式表:
内部样式表是写到html页面内部,是将所有的CSS代码抽取出来,单独放到一个<style>
标签中。
style标签理论上可以放到HTML文档的任何地方,但一般放在文档的<head>
标签中。
通过此种方式,可以方便控制整个页面中的元素样式设置。
代码结构非常的清晰,但是并没有实现结构与样式完全分离。
行内样式表:
行内样式表是在元素标签内部的style属性中设定CSS样式,适合于修改简单样式。
<div
style="
line-height: 1em;
font-family: 'Courier New', Courier, monospace;
font-style: italic;
font-size: 1cm;
color: aquamarine;
text-align: center;
"
>
青春不常在,抓紧谈恋爱!
</div>
1、style其实就是标签的属性。
2、在双引号中间,写法要符合CSS规范。
3、可以控制当前的标签设置样式。
4、由于书写繁琐,并没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用。
5、使用行内样式表设定CSS,通常也被称为行内式引入。
外部样式表:
实际开发都是外部样式表,适合于样式比较多的情况。核心是:样式单独写到CSS文件中,之后把CSS文件引入到HTML页面中使用。
引入外部样式表分为两步:
1、新建一个后缀名为.css的样式文件,把所有CSS代码都放入此文件中。
2、在HTML页面中,使用<link>
标签引入这个文件。
<link rel="stylesheet" herf="css文件路径">
属性 | 作用 |
---|---|
rel | 定义当前文档与被链接文档之间的关系,在这里需要指定为"stylesheet",表示被链接的文档是一个样式表文件。 |
hrefv | 定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径。 |
用外部样式表设定CSS,通常也被称为外链式或链接式引入,这种方式是在开发中常用的方式。
CSS引入方式总结:
样式表 | 优点 | 缺点 | 使用情况 | 控制范围 |
---|---|---|---|---|
行内样式表 | 书写方便,权重高 | 结构样式混写 | 较少 | 控制一个标签 |
内部样式表 | 部分结构和样式相分离 | 没有彻底分离 | 较多 | 控制一个页面 |
外部样式表 | 完全实现结构与样式相分离 | 需要引入 | 最多 | 控制多个页面 |
4.1Emmet语法
Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度,Vscode内部已经集成该语法。
1、快速生成HTML结构语法 :
- 生成标签 直接输入标签名按Tab键即可 比如div然后Tab键,就可以生成
<div></div>
- 如果想要生成多个相同的标签 比如: div*3
- 如果有父子级关系的标签,可以用> 比如:ul>li 就可以了
- 如果有兄弟关系的标签(同级),用 + 就可以了比如:div+p
- 如果生成带有类名或者id名字的,直接写 .demo 或者 #two Tab键就可以了
- 如果生成的div类名是有顺序的,可以用自增符号 $
- 如果想要在生成的标签内部写内容可以用{}表示。
2、快速生成CSS样式语法:
比如 w200 按tab键 可以生成 width:200px;
比如 lh26 按tab键 可以生成 line-height:26px;
4.2CSS的复合选择器
在CSS中可以根据选择器的类型把选择器的类型分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的。
-
复合选择器可以更准确、更高效的选择目标元素(标签)
-
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
-
常用的复合选择器包括:后代选择器,子选择器,并集选择器,为类选择器等等
后代选择器(重要)
后代选择器又称为包含选择器,可以选择父元素里面的子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔,当标签发生嵌套时,内层标签就成为外层标签的后代。
元素1 元素2 {样式声明} 例子:ol li a { color: red; }
<style>
ol li {
color: pink;
}
.nav li a {
color: rgb(255, 0, 4);
}
</style>
</head>
<body>
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>
<ul class="nav">
<li>1</li>
<li>2</li>
<li><a href="#">3</a></li>
</ul>
</body>
子选择器
子元素选择器只能选择做为某元素的最近一级子元素。简单理解就是选亲儿子元素。
语法: 元素1 > 元素2 {样式声明} 表示元素1里面的所有直接后代(子元素)元素2.
例如: div > p {样式声明} /* 选择 div 里面所有最近一级 p 标签元素 */
<style>
a {
text-decoration: none;
}
.nav > a {
color: pink;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">我是儿子</a>
<p><a href="#">我是孙子</a></p>
</div>
</body>
并集选择器(重要)
并集选择器可以选择多组标签,同时为他们定义相同的样式。通常用于集体声明。并集选择器是将各选择器通过逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
语法: 元素1,元素2 {样式声明}
<style>
div,
p,
.pig li {
color: pink;
}
/* */
</style>
</head>
<body>
<div>胸大</div>
<p>熊二</p>
<span>光头强</span>
<ul class="pig">
<li>小猪排气</li>
<li>猪爸爸</li>
<li>猪妈妈</li>
</ul>
</body>
伪类选择器
伪类选择器用于向某些选择器添加特殊效果,比如给链接添加特殊效果,或选择第一个,第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如 :hover 、 :first-chiled.
因为伪类选择器很多,比如有链接伪类、结构伪类等,所以这里先给大家讲解常用的链接伪类选择器。
a:link
/选择所有未被访问的链接/
a:visited
/选择所有已被访问的链接/
a:hover
/选择鼠标指针为于其上的链接/
a:active
/选择活动链接(鼠标按下未弹起的链接)/
链接伪类选择器:
1、为了确保生效,请按照LVHA的顺序声明:link :visited :hover :active
2、记忆法:love hate 或者 lv 包包 hao
3、因为a链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。
focus伪类选择器:
:focus 伪类链接选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况<input>
类表单元素才能获取,因此这个选择器也主要针对对于表单元素来说。
input:focus{
background-color:yellow;//表单的背景颜色
color: red;//输入的字体颜色
}
复合选择器总结
选择器 | 作用 | 特征 | 使用情况 | 隔开符号及用法 |
---|---|---|---|---|
后代选择器 | 用来选择后代元素 | 可以是子孙后代 | 较多 | 符号是空格.nav a |
子代选择器 | 选择最近一级元素 | 只选亲儿子 | 较少 | 符号是大于.nav>p |
并集选择器 | 选择某种相同样式的元素 | 可以用于集体声明 | 较多 | 符号是逗号 .nav,.heeader |
链接伪类选择器 | 选择不同状态的链接 | 跟链接相关 | 较多 | 重点记住a{}和a:hover实际开发的写法 |
:focus选择器 | 选择获得光标的表单 | 跟表单相关 | 较少 | input:focus 记住这个写法 |
5.1、CSS的元素显示模式
什么是元素的显示模式:
作用:网页的标签非常的多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。
元素显示模式就是元素(标签)以什么方式进行显示,比如<div>
自己独占一行,比如一行可以放多个<span>
.
HTML元素一般分为块元素和行内元素两种类型。
块元素:
常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>
等,其中<div>
标签是最典型的块元素。
块元素的特点:
- 比较霸道自己独占一行
- 高度,宽度,外边距以及边距都可以控制。
- 宽度默认是容器(父级宽度)的100%。
- 是一个容器及盒子,里面可以放行内或者块级元素。
行内元素:
常见的行内元素有<a>,<strong>,<b>,<em>,<del>,<s>,<ins>,<u>,<span>
等,其中<span>
标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
行内元素的特点:
- 相邻行内元素在一行上,一行可以显示多个 。
- 高,宽直接设置是无效的。
- 默认宽度就是它本身内容的宽度。
- 行内元素只能容纳文本或者其他行内元素。
注意:
- 链接内不能再放链接了
- 特殊情况下
<a>
里面可以放块级元素,但是给<a>
转换一下块级模式最安全。
行内块元素:
在行内元素中有几个特殊的标签——<img/>、<input/>、<td>、
它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。
行内块元素的特点:
- 和相邻行内元素在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
- 默认宽度就是它本身内容的宽度(行内元素特点)。
- 高度,行高,外边距都可以可控制(块级元素特点)。
元素显示模式总结:
元素模式 | 元素排列 | 设置样式 | 默认宽度 | 包含 |
---|---|---|---|---|
块级元素 | 一行只能放一个块级元素 | 可以设置宽度和高度 | 容器的100% | 容器级可以包含任何标签 |
行内元素 | 一行可以放多个行内元素 | 不可以直接设置宽度和高度 | 它本身内容的宽度 | 容纳文本或其他行内元素 |
行内块元素 | 一行放多个行内块元素 | 可以设置宽度和高度 | 它本身内容的宽度 |
5.2元素显示模式转换
特殊情况下,我们需要元素模式的转换,简单理解:一个模式的元素需要另外一种模式的特性
比如想要增加链接<a>
的触发范围。
转换为块元素:display:block
转换为行内元素:display:inline
转换为行内块元素:display:inline-block
单行文字垂直居中的代码:
CSS没有给我们提供文字垂直居中的代码,使用一个小技巧来实现。
解决方案: 让文字的 行高等于盒子的高度 就可以让文字在当前盒子内垂直居中。(height=line-height)
单行文字垂直居中的原理:
上空隙
**行高 ** 文本本身高度
下空隙
简单理解:行高的上空隙和下空隙把文字挤到中间。
5.3CSS背景
背景属性可以设置背景颜色,背景图片,背景平铺,背景图片位置,背景图像固定等。
背景颜色:
background-color 属性定义了元素的背景颜色。
一般情况下元素的背景颜色默认值是transparent
(透明),我们也可以手动指定背景颜色为透明色。
背景图片:
background-image属性描述了元素的背景图像。实际开发常见于logo或者一些装饰的小图片或者是超大的背景图片。优点是非常便于控制位置。 background-image: none / url (images/logo.png);
背景平铺:
如果需要在HTML页面上对背景图像进行平铺,可以使用background-repeat属性。
background-repeat: repeat | no-repeat | repeat-x |repeat-y`
参数值 | 作用 |
---|---|
repeat | 背景图像在纵向和横向上平铺(默认的) |
no-repeat | 背景图像不平铺 |
repeat-x | 背景图像在横向上平铺 |
repeat-y | 背景图像在纵向平铺 |
背景图片的位置:
利用background-position属性可以改变图片在背景中的位置。
background-position: x y;
参数代表的意思是:x坐标和y坐标。可以使用方位名词或者精确单位。
方位名词:
1,参数是方位名词,则两个值前后顺序无关,比如 left top 和 top left 效果一致。
2,如果只指定了一个方位名词,另一个值忽略,则第二个值默认居中对齐。
精确单位:
1,参数是精确单位,那么第一个肯定是x坐标,第二个一定是y坐标。
2,如果指定一个数值,那该数值一定是X坐标,另一个默认垂直居中。
混合单位:如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,另一个默认垂直居中。
参数值 | 说明 |
---|---|
length | 百分数 |
position | top|center|bottom|left|right 方位名词 |
背景图像固定:(背景附着)
background-attachment
属性设置背景图像是否固定或者随着页面的其余部分滚动。(后期可以制作视差滚动效果)
参数 | 作用 |
---|---|
scroll | 背景图像是随对象内容滚动 |
fixed | 背景图像固定 |
背景复合写法:
为了简化属性的代码,我们可以将这些属性合并简写在同一个属性background中。从而节约代码量。
当使用简写属性时,没有特定的书写顺序,一般习惯约定顺序为:
background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置
背景色半透明:
background: rgba(0, 0, 0, 0.3);
最后一个参数是alpha
透明度,取值范围是在0~1之间。
我们习惯把0.3的0可以省略掉。
注意:背景半透明是指的盒子背景半透明,盒子里面的内容不受影响。
css新增属性,是IE9+版本浏览器才支持的,但实际开发中我们不太关注兼容性的写法,可以放心使用。
属性 | 作用 | 值 |
---|---|---|
background-color | 背景颜色 | 预定义的颜色值/十六进制/RGB代码 |
background-image | 背景图片 | URL(图片路径) |
background-repeat | 是否平铺 | repeat/no-repeat/repeat-x/repeat-y |
background-position | 背景位置 | length/position 分别是x 和 y坐标 |
background-attachment | 背景附着 | scroll(背景滚动)/fixed(背景固定) |
背景简写 | 书写更简单 | 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置 |
背景色半透明 | 背景颜色半透明 | background: rgab(0,0,0,0.3);后面必须是4个值 |
背景图片;实际开发常见于logo或者一些装饰性的小图片或者是超大的背景图片,优点是非常便于控制位置 。(精灵图也是一种运用场景)
5.4CSS的三大特性:层叠性,继承性,优先级。
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。
层叠性:
样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行那个样式。
样式不冲突,不会层叠。
继承性:
子标签会继承父标签的某些样式,如文本颜色和字号。简单的理解就是:子继父业。恰当地使用继承性可以简化代码,降低CSS样式的复杂性。
行高的继承性:
body {
font:12px/1.5 Microsoft YaHei
}
行高可以跟单位也可以不跟单位
如果子元素没有设置行高,则会继承父元素的行高为1.5
此时子元素的行高是:当前子元素的文字大小*1.5
body行高1.5这样写发最大的优势就是里面的子元素可以根据自己文字大小自动调整行高。
优先级:
当同一个元素怒指定多个选择器,就会有优先级的产生。
1,选择器相同,则执行层叠。 2,选择器不同,则根据选择器的权重来执行。
选择器 | 选择器的权重 |
---|---|
继承或者* | 0,0,0,0 |
元素选择器 | 0,0,0,1 |
类选择器,伪类选择器 | 0,0,1,0 |
ID选择器 | 0,1,0,0 |
行内样式 style="" | 1,0,0,0 |
!important 重要的 | 无穷大 |
权重是有4组数字组成的,但是不会有进位。
可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器,以此类推。
等级判断从左到右,如果某一位数值相同,则判断下一位数值。
继承的权重为0, 如果该元素没有直接选中,不管父元素权重有多高,子元素得到的权重都是0。
a链接浏览器默认制定了一个样式 蓝色的有下划线。
如果是复合选择器,复合选择器会有权重叠加的问题。( 权重虽然会有叠加,但是永远不会有进位。)
div ul li 0,0,0,3
.nav ul li 0,0,1,2
a:hover 0,0,1,1
.nav a 0,0,1,1
6.1CSS盒子模型:
-
能够准确阐述盒子模型的4个组成部分
-
能够利用边框复合写法给元素添加边框
-
能够计算盒子的实际大小
-
能够利用盒子模型布局模块案例
-
能够给盒子设置圆角边框
-
能够给盒子添加阴影
-
能够给文字添加阴影
盒子模型 PS基本操作 综合案例 圆角边框 盒子阴影 文字阴影
页面布局要学习三大核心,盒子模型,浮动和定位,学习好盒子模型能非常好的帮助我们布局页面。
网页布局的本质:
网页布局过程:
-
1,先准备好相关的网页元素,网页元素基本都是盒子Box.
-
2,利用CSS设置好盒子样式,然后摆放到相应的位置。
-
3,往盒子里面装内容。
网页布局的核心本质:就是利用CSS摆放盒子。
盒子模型:
所谓盒子模型就是把HTML页面中的布局元素看作是一个矩形的盒子。CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边框,外边距,内边距,和实际内容。
边框 (border):
边框宽度(border-width) 边框样式(border-style):(solid实线 dashed虚线 dotted点线) 边框颜色(border-color)
简写:border:1px solid red;
没有顺序
边框的分开写法: border-top/bottom:1px solid red;
/只设定上边框,其余同理/
表格的细线边框: border-collapse属性控制浏览器绘制表格边框的方式,。它控制相邻单元格的边框。(合并相邻的边框)
边框会影响盒子的实际大小:边框会额外增加盒子的实际大小。因此我们有两种方案解决:
-
1, 测量盒子大小的时候不量边框
-
2,如果测量的时候包含了边框,则需要width/height减去边框的宽度。
内容 (content):
内边距 (padding):
边框与内容之间的距离
给padding指定的值之后: 1,内容和边框有了距离,添加了内边距。 2,padding影响了盒子的实际大小。
也就是说,如果已经有了宽度和高度,此时再指定内边框,会撑大盒子。
如果盒子本身没有被指定width/height属性,则此时padding不会撑开相应盒子的大小。(给了width不会撑大height的大小)
解决方案:如果保证盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可。
属性 | 作用 |
---|---|
padding-left | 左内边距 |
padding-right | 右内边距 |
padding-top | 上内边距 |
padding-bottom | 下内边距 |
值的个数 | 表达意思 |
---|---|
padding: 5px; | 1个值,代表上下左右都有5像素内边距 |
padding: 5px 10px; | 2个值,代表上下内边距是5像素 左右内边距是10像素 |
padding: 5px 10px 20px; | 3个值,代表上内边距5像素,左右内边距10像素,下内边距20像素 |
padding: 5px 10px 20px 30px; | 4个值,上是5像素 右是10像素 下是20像素 左是30像素(顺时针) |
例子:
<style>
.nav {
height: 41px;
background-color: #fcfcfc;
border: 1px solid pink;
border-top: 3px solid #ff8500;
border-bottom: 1px solid #edeef0;
line-height: 41px;
}
.nav a {
display: inline-block;
height: 41px;
padding: 0 20px;
font-size: 14px;
color: #4c4c4c;
text-decoration: none
}
a:hover {
background-color: rgba(197, 197, 197, 0.299);
</style>
</head>
<body>
<div class="nav">
<a href="#">设为首页</a>
<a href="#">手机新浪网</a>
<a href="#">移动客户端</a>
<a href="#">博客</a>
<a href="#">微博</a>
<a href="#">关注我</a>
</div>
</body>
外边距(margin):
margin属性用于设置外边距,即控制盒子和盒子之间的距离。
属性 | 作用 |
---|---|
margin-left | 左外边距 |
margin-right | 右外边距 |
margin-top | 上外边距 |
margin-bottom | 下外边距 |
外边距的典型应用:
外边距可以让块级盒子水平居中,但是必须满足两个条件:
- 盒子必须指定了宽度(width)。
- 盒子左右的外边距都设置为auto。
常见的写法:
.header {
width: 900px;
height: 500px;
background-color: pink;
margin: 0 auto;
}
margin-left:auto; margin-right:auto; margin:auto; margin-left: 0 auto;
**注意:**以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align:center
即可。
外边距合并;
对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:
- 可以为父元素定义上边框。
- 可以为父元素定义上内边距。
- 可以为父元素添加
overflow:hidden
。
1.只有垂直方向的外边距会出现合并,水平方向上不会出现外边距合并。
2.垂直方向上相邻的元素才会有外边距合并的问题
兄弟元素间的外边距合并:
1.若两者都是正值,取值为两者间最大值
2.若两个外边距一正一负,取值为两者之和
3.若两个外边距都是负值,取值为绝对值较大的外边距
**原本预想:**想让子元素在父元素中向下移动100px,到达父元素的底部
<style>
.box1{
width: 200px;
height: 200px;
background-color: brown;
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
margin-top: 100px;
}
</style>
<div class="box1">
<div class="box2">
</div>
</div>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WxcLZEiO-1666254950085)(D:\Programs\ShareX\ShareX\Screenshots\2022-10\chrome_Itl7iwZLhn.png)]
解决方案:
1.给原本设置给子元素的margin值,修改为设置父元素的padding,并相应减少父元素的height。
<style>
.box1{
width: 200px;
height: 100px;
background-color: brown;
padding-top: 100px;
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
}
</style>
<div class="box1">
<div class="box2">
</div>
</div>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nyRFZu0-1666254950087)(D:\Programs\ShareX\ShareX\Screenshots\2022-10\chrome_vE6uLMUEiK.png)]
2.给父元素添加边框属性。给父元素添加边框属性。在父元素中用height减去边框高度,在子元素中用margin-top减去边框高度(由于增加了边框的厚度,所以导致盒子高度增大,这一步是为了保证父元素盒子的可见区域高度不变)。
<style>
.box1{
width: 200px;
height: 195px;
background-color: brown;
border-top: 5px solid yellow;
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
margin-top: 95px;
}
</style>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zV8YRFAf-1666254950089)(D:\Programs\ShareX\ShareX\Screenshots\2022-10\chrome_wh6bHidSw9.png)]
3.给父元素或子元素设置浮动属性。
4.给父元素或子元素设置position:absolute属性
5.给父元素设置overflow:hidden
6.给父元素或子元素设置display:inline-block
7.利用解决float高度塌陷的方法的原理
在父元素中before的位置设置伪元素,并将该伪元素设置为table类型,内容设置为空字符串,这样就相当于在box1和box2之间设置了个"隔板"(类似于边框的作用)
<style>
.box1{
width: 200px;
height: 200px;
background-color: brown;
}
.box1::before{
display: table;
content: "";
/* clear: both; */
}
.box2{
width: 100px;
height: 100px;
background-color: blue;
margin-top: 100px;
}
</style>
清楚内外边距:
网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一样。因此我们在布局前,首先下网页元素的内外边距。
* {
margin = 0;
padding = 0;
}
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以了。
PS基本操作:
网页美工大部分效果图都是利用PS(Photoshop)来做的,所以以后我们大部分切图工作都是在PS里面完成的。
圆角边框
border-radius
属性用于设置元素的外边框圆角。(内切圆)
语法:border-radius: length; radius 半径(圆的半径)原理:(椭)圆与边框的交集形成圆角的效果。
-
参数值可以为数值或百分比的形式。
-
如果是正方形,想要设置一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为50%。
-
如果是矩形,设置为高度的一半即可做
-
该属性是一个简写属性,可以跟四个值,分别代表左上角,右上角,右下角,左下角。(顺时针)
-
分开写
border-top-left-radius、border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius、
盒子阴影:
语法:box-shadow: h-shadow v-shadow blur spread color inset;
值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置。允许负值 |
v-shadow | 必需。垂直阴影的位置。允许负值 |
blur | 可选。模糊距离。 |
spread | 可选。阴影的尺寸。 |
color | 可选。阴影的颜色。 |
inset | 可选。将外部阴影(outset)改为内部阴影。 |
原先盒子没有影子,当鼠标经过盒子出现影子。
div:hover {
box-shadow: 10px 10px 12px -6px rgba(0, 0, 0, 0.3) inset;
}
文字阴影:
语法:text-shadow: h-shadow v-shadow blur color;
即为: text-shadow: 5px 5px 6px rgba(0, 0, 0, 0.3);
值 | 描述 |
---|---|
h-shadow | 必需。水平阴影的位置。允许负值 |
v-shadow | 必需。垂直阴影的位置。允许负值 |
blur | 可选。模糊距离。 |
color | 可选。阴影的颜色。 |
6.2CSS浮动
- 能够说出为什么需要浮动
- 能够说出浮动的排列特性
- 能够说出3种最常见的布局方式
- 能够说出为么需要清楚浮动
- 能够写出至少2种清楚浮动的方法
- 能够利用Photoshop实现基本的切图
- 能够利用Photoshop插件实现切图
- 能够完成学成在线的页面布局
浮动:(float)
传统网页布局的三种方式:
网页布局的本质————用CSS来摆放盒子,把盒子摆放到相应的位置。
CSS提供了三种传统布局方式(简单的说,就是盒子如何进行排列顺序):
- 普通流(标准流)
- 浮动
- 定位
标准流:
所谓的标准流就是标签按照规定好默认方式排列。(最基本的布局方式。)
1、块级元素会独占一行,从上向下顺序排列
常用元素:div 、hr 、p 、h1-h6 、ul 、ol 、dl 、form 、table
2、行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行。
常用元素:span 、a 、i 、em
**注意:**实际开发中,一个页面基本包含了三种布局方式,后面移动端学习新的布局方式。
为什么需要浮动?
1、父级没有高度2、子盒子浮动了3、影响下面的布局,我们就应该清除浮动。
总结:有很多的布局效果,标准流没有办法完成,此时就可以利用浮动完成布局。因为浮动可以改变元素标签默认的排列方式。
浮动最典型的应用:可以让多个块级元素在一行内排列显示。
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
什么是浮动?
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及到包含块或另一个浮动框的边缘。
选择器 { float:属性值;}
属性值 | 描述 |
---|---|
none | 元素不浮动(默认值) |
left | 元素向左浮动 |
right | 元素向右浮动 |
浮动的特性(重难点)
加了浮动特性之后,会有很多特性需要我们掌握的。
1、浮动特性会脱离标准流
- 脱离标准流的控制移动到指定位置。(俗称脱表)
- 浮动的盒子不再保留原先的位置。
2、浮动的元素会会一行显示并且顶部对齐
- 如果多个盒子都设置了浮动,则他们会按照属性值一行内显示并且顶端对齐排列。
- 注意:浮动的元素是互相贴靠在一起的,如果父级宽度装不下这些盒子,多出的盒子会另起一行对齐。
3、浮动元素会具有行内块元素的特性。
- 任何元素都可以浮动,不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性。
- 如果块级元素盒子没有设置宽度,默认宽度和父级元素一样宽,但是添加浮动后,它的大小根据来决定。
- 浮动盒子的中间是没有缝隙的,是紧挨着一起的
- 行内元素同理。
浮动元素经常和标准流的父级搭配使用:
为了约束浮动元素位置,我们网页布局一般采取的策略是:
先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局第一准则。
常见的浮动的布局:
1、浮动和标准流的盒子搭配。
先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置。
2、一个元素浮动了,理论上其余的兄弟元素也要浮动。
一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题。
浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。
为什么要清楚浮动?
父盒子不设置高度子盒子会把父盒子撑大。子盒子添加float不会占用盒子的高度。
由于父级盒子很多情况下,不方便给高度,但时候盒子浮动又不占用位置,最后父级盒子高度为0时,就会影响下面的标准流盒子。
由于浮动元素不在占用原文档留的位置,所以它会对后面的元素排版产生影响。
清除浮动的本质:
清除浮动元素造成的影响。
清楚浮动之后,父级就会根据浮动的盒子自动检测高度。父级有了高度就不会影响下面的标准流。
语法规范:选择器{clear:属性值}
属性值 | 描述 |
---|---|
left | 不允许左侧有浮动元素 |
right | 不允许右侧有浮动元素 |
both | 同时清除左右两侧浮动的影响 |
清除浮动策略:闭合元素。只让浮动元素在父盒子内部的影响,不影响父盒子外边的其他盒子。
清除浮动的方法:
1、额外标签法也称为隔墙法,是W3C推荐的做法。
额外标签法会在浮动元素末尾添加一个空标签例如:<div style="clear:both"><div>
优点:通俗易懂,书写方便
缺点:添加许多无意义的标签,结构比较差 注意:要求这个新的空标签必须是块级元素。
2、父级添加overflow属性
属性值设置为:hidden、auto、或scroll
3、父级添加after伪元素
:after方式是额外标签法的升级版,也是给父元素添加。
.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {
/* IE6、7专有*/
*zoom: 1;
}
<div class="box clearfix"></div>
4、父级添加双伪元素
.clearfix::before,
.clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
优点:代码更简洁,照顾低版本的浏览器。
6.3CSS属性书写顺序
- 布局定位属性:
display/position/float/clear/visibility/overflow
- 自身属性:
width/height/margin/padding/border/background
- 文本属性:
color/font/text-decoration/text-align/vertical-align/white-space/break-word
- 其他属性(CSS3):
content/cursor/border-redius/box-shadow/text-shadow/background:linear-gradient
页面布局思路:(先结构后样式)
必须确定页面的版心
行模块 以及每个行中的列模块
行中的列模块经常采用浮动布局,先确定列的大小 之后确定列的位置
6.4CSS定位( 定位模式 + 边偏移)
为什么需要定位?
1、某一个盒子可以自由的在一个盒子内自由移动,浮动可以让多个盒子一行没有缝隙排列显示,经常用于横向排列盒子。
2、定位则是让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其它盒子。
定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。
定位模式:
定位模式决定元素的定位方式,它通过CSS的position属性来设置,其值可以分为四个:
值 | 语义 |
---|---|
static | 静态定位 |
relative | 相对定位 |
absolute | 绝对定位 |
fixed | 固定定位 |
边偏移:
边偏移就是定位的盒子移动到最终位置。有top、bottom、left和right
四个属性。
-例子:top:50px
顶端偏移量,定义元素相对于其父元素上边线的距离。
静态定位是元素的默认定位方式,无定位的意思。
静态定位:(static)
语法:选择器 {position: static;}
静态定位按照标准流的特性摆放位置,它没有边偏移。
静态定位在布局中很少用到。
相对定位:(relative)
相对定位是元素在移动位置的时候,是相对它原来的位置来说的。(自恋型)
语法:选择器 {position:relative}
相对位置的特点:
-
1、它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)
-
2、原来在标准的位置的继续占有,后面的盒子仍然以标准流的方式对待它。(不脱标,继续保留原来的位置)
绝对定位:(absolute)
绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的(拼爹型)
语法:选择器 { position:absolute;}
绝对定位的特点:
-
如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document文档)。
-
如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。
-
绝对定位不在占有原先的位置 。(脱标)
绝对定位的使用场景**:**
*子绝父相 :*子级是绝对定位的话,父级要用相对定位。(相对定位常做绝对定位的父级)
- 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
- 父盒子需要加定位限制子盒子在父盒子内显示。
- 父盒子布局时,需要占有位置,因此父亲只能是相对定位。
总结:因为父级需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位。
当然,子绝父相不是永远不变的,如果不需要占有位置,子绝父绝也会遇到。
固定定位:(fixed)
固定定位是元素固定于浏览器可视区域的位置。主要使用场景:可以在浏览器页面滚动时元素的位置不会改变。
语法:选择器 {position:fixed;}
固定定位的特点:
1、以浏览器的可视窗口为参照点移动元素。
- 跟父元素没有任何关系。
- 不随滚动条滚动而滚动
2、固定定位不占有原先的位置
- 固定定位也是脱标的,其实固定定位也是可以看做是一种特殊的绝对定位。
固定在版心右侧位置:
让固定的盒子left=50% 走到浏览器可视区域(也可以看作版心)的一半位置。
让固定定位的盒子margin-left:版心宽度的一半距离。多走版心宽度的一半位置。
粘性定位:(sticky)
粘性定位可以认为是相对性定位和固定定位的混合。
语法:选择器 {position:sticky;top:10px;}
粘性定位的特点:
- 使用条件:
- 父元素不能overflow:hidden或者overflow:auto属性。
- 必须指定
top、bottom、left、right
4个值之一,否则只会处于相对定位 - 父元素的高度不能低于sticky元素的高度
- sticky元素仅在其父元素内生效
- 以浏览器的可视窗口为参照点移动元素(固定定位的特点)
- 粘性定位占有原先的位置(相对定位的特点)
使用场景:在页面中用鼠标滑轮上下滚动时,其会跟随一段距离,但不会消失。当回滚到当前版心的位置时仍然跟随滚动。
叠放次序:(z-index)
在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index来控制盒子的前后次序(z轴)
语法: 选择器 { z-index:1;}
- 数值可以是正整数,负数或0,默认是auto,数值越大,盒子越靠上。
- 如果是值相同,则按照后来者居上。
- 数字后面不能加单位。
定位的拓展:
绝对定位的盒子居中:
加了绝对定位的盒子是不能通过margin:0 auto;
水平居中,但是可以通过以下计算方法实现水平居中。
水平居中:left:50%;
让盒子向左移动自身宽度的一半。margin-left=-100px:
让盒子向左移动自身宽度的一半。
定位的特殊性:
绝对定位和固定定位也和浮动相似。
1、行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
2、块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
绝对定位(固定定位)会完全压住盒子:
浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)。
但是绝对定位(固定定位)会压住下面标准流所有的内容。
浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。文字会围绕浮动元素。
元素的显示与隐藏:
display:none;
隐藏对象 (不在占有原来的位置。)
display:block;
除了转换为块级元素之外,同时还有显示元素的意思。
visibility 可见性 (属性用于指定一个元素应该可见还是隐藏。)
visibility:visible;
元素可视
visibility:hidden;
元素隐藏(隐藏元素之后,继续占有原来的位置 。)
overflow 溢出:
visible不剪切内容也不添加滚动条。 hidden不显示超出对象尺寸的内容。scroll溢出的部分显示滚动条,不溢出也显示滚动条。auto超出的部分显示滚动条,不超出的部分不显示滚动条。
如果是定位的盒子,慎用overflow。
主要内容部分:
7.1精灵图:(sprites)
为什么使用精灵图?
一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就回频繁地接收和发送请求图片,造成服务器请求压力太大,这将大大降低页面的加载速度。因此为了有效地降低服务器的接受和发送请求的次数,提高页面的加载速率,出现了CSS精灵技术(CSS Sprites、CSS雪碧)。
核心原理:将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求就可以了。
- 采用了精灵图这一技术可以缓解加载时间过长从而影响用户体验的这个问题。
- 在一定程度上减少了页面的加载速度,也一定程度上缓解了服务器的压力。
- 使用精灵图可以有效减少服务器接收和发送请求的次数,从而达到提高页面的加载性能。
精灵图(sprites)的使用:
移动背景图片位置,此时可以使用background-position
。
移动的距离就是这个目标图片的x和y坐标。注意网页中的坐标有所不同。
因为一般情况下都是网上往左移动,所以数值是负值。(网页中的坐标:x轴右边走是正值,左走是负值。y轴下走是正值)
使用精灵图一定要测量准确,每个小背景图片的大小和位置。
.boxb {
position: fixed;
left: 50%;
top: 50%;
width: 520px;
margin-left: -220px;
height: auto;
}
.box {
float: left;
width: 133px;
height: 140px;
background: url(images1/jlt.png) no-repeat -615px -171px;
}
.box1 {
float: left;
width: 128px;
height: 141px;
background: url(images1/jlt.png) no-repeat -459px -513px;
}
.box2 {
float: left;
width: 136px;
height: 140px;
background: url(images1/jlt.png) no-repeat 0 -689px;
}
<div class="boxb">
<div class="box"></div>
<div class="box1"></div>
<div class="box2"></div>
</div>
7.2字体图标
字体图标的产生:
字体图标使用场景:主要用于显示网页中通用,常用的一些小图标
精灵图是有很多优点的,但是缺点很明显
1.图片文件还是比较大的。
2.图片本身放大和缩小会失真
3.一旦图片制作完毕想要更换非常复杂
此时,有一种技术的出现很好的解决了以上问题。就是字体图标iconfont.
字体图标可以作为前端工程师提供一种方便高效使用方式。展示的是图标,本质属于字体。
字体图标的优点:
- 轻量级:图标字体要比一系列的图像要小,一旦字体加载了,图标就会马上渲染出来,减少了服务器的请求。
- 灵活性:本质就是文字,可以随意的改动颜色,产生阴影,透明效果等,旋转等
- 兼容性: 几乎支持所有的浏览器,请放心使用
总结:
1、如果遇到结构样式简单的小图标,就用字体图标。
2、如果结构样式复杂的小图片,就用精灵图。
字体图标的下载:
icomoon字库http://icomoon.io 阿里iconfont字库http://www.iconfont.cn/
字体图标的引入:(引入到html)
1、下载完毕之后,源文件不要删后面会用到。
2、把下载包里面的fonts文件夹放入到页面根目录下面。
在CSS样式中全局声明字体:简单理解把这些字体文件通过CSS引入到我们的页面中。一定要注意文件的问题。
从style.css中可以引入。
<style>
* {
padding: 0;
margin: 0;
}
@font-face {
font-family: "icomoon";
src: url("fonts/icomoon.eot?7jom7a");
src: url("fonts/icomoon.eot?7jom7a#iefix") format("embedded-opentype"),
url("fonts/icomoon.ttf?7jom7a") format("truetype"),
url("fonts/icomoon.woff?7jom7a") format("woff"),
url("fonts/icomoon.svg?7jom7a#icomoon") format("svg");
font-weight: normal;
font-style: normal;
font-display: block;
}
span {
font-family: "icomoon";
font-size: 16px;
color:red;
}
</style>
<body>
<span></span>
</body>
在demo.html复制要添加的图标到<span>
等标签中。
span {font-family:'icomoon'}
字体图标的追加:(添加新的小图标)
工作中原来的字体图标不够用,需要添加新的字体图标到原来的字体文件中。
先在官网中的import icons 把压缩包里面的selection.json从新上传,然后选中自己想要的新图标,从新下载压缩包,并替换原来的文件即可。
7.3CSS三角
CSS 提供了三种出色的方法可以实现基本的形状。本文就来看看如何使用这些方法来实现一个三角形。三种方法如下:
- border
- linear-gradient
- clip-path
1、使用 CSS 绘制三角形的第一种方法就是使用 「border」 属性。
给定一个宽度和高度都为 0 的元素,其 border 的任何值都会直接相交,我们可以利用这个交点来创建三角形。
2、linear-gradient 需要结合 background-image 来实现三角形,下面就来逐步使用渐变实现一个三角形。
3、 最后一种方法——clip-path,它是最精简和最可具扩展性的。 不过目前其在浏览器兼容性不是很好,使用时要考虑浏览器是否支持。
7.4CSS用户界面样式
用户界面样式,以便更好地提高用户的体验。
1、更改鼠标的样式
li {cursor:pointer;}
设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。
属性值 | 描述 |
---|---|
default | 小白默认 |
pointer | 小手 |
move | 移动 |
text | 文本 |
not-allowed | 禁止 |
2、表单轮廓(outline)
给表单添加outline:0;或者outline:none;样式之后,就可以去掉默认的蓝色边框。
3、防止表单域拖曳(resize)
实际开发中的文本框是不允许拖曳的。textarea { resize: none}
文本域尽量放在一行上,因为光标会出现空格现象。
7.5vertical-align属性应用
经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
官方解释:用于设置一个元素的垂直对齐方式,但是它只针对于行内元素或者行内块元素有效。
语法:vertical-align:base|top|middle|bottom
值 | 属性 |
---|---|
baseline | 默认。元素放置在父元素的基线上 |
top | 把元素的顶端与行中最高元素的顶端对齐 |
middle | 把此元素放置在父元素的中部 |
bottom | 把元素的 顶端与行中最低的元素的顶端对齐 |
解决图片底部默认空白缝隙的问题:
bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。
主要解决方式有两种:
1、给图片添加vertical-align:middle|top|bottom
等(不需要基线对齐,提倡使用)
2、把图片转换为块级元素display:block;
7.6溢出的文字省略号显示
单行文本溢出显示省略号,需要满足三个条件:
1.强制一行内显示文本。
white-space:nowrap;(默认normal自动换行)
2.超出的部分隐藏。
overflow:hidden;
3.文本用省略号代替超出的部分。
text-overflow:ellipsis;
多行文本显示省略号:
有较大兼容性问题,适用于webKit浏览器或移动端。
1.弹性伸缩盒子模型显示。
display: -webkit-box;
2.限制在一个块元素显示的文本的行数。
-webkit-line-clamp: 3;
3.设置或检索伸缩盒对象的子元素的排列方式。
-webkit-box-orient: vertical;
7.7常见的布局技巧
1、margin负值的运用
让每个盒子的margin往左侧移动-1px正好压住相邻盒子的边框。
鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有定位,则加相对定位【保留位置】),如果有定位,则加z-index
。
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.box {
height: 302px;
width: 120;
margin-top: 100px;
}
ul {
float: left;
position: relative;
left: 50%;
}
li {
position: relative;
right: 50%;
float: left;
width: 200px;
height: 300px;
border: 1px solid rgb(156, 156, 156);
margin-left: -1px;
cursor: pointer;
}
li:hover {
z-index: 1;
border: 2px solid rgb(255, 89, 0);
background-color: rgba(0, 0, 0, 0.1);
}
</style>
<body>
<div class="box">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
2、文字围绕浮动元素
<style>
* {
padding: 0;
margin: 0;
}
.box {
width: 300px;
height: 200px;
border: 1px solid black;
margin: 0 auto;
}
.imi {
float: left;
width: 140px;
height: 200px;
padding: 4px;
}
.imi img {
width: 100%;
}
.box p {
text-indent: 1em;
}
</style>
<body>
<div class="box">
<div class="imi">
<img src="images1/1.png" alt="#" />
</div>
<p>糊弄is农民工是的呢什么那个女离开SVN米力农。</p>
</div>
</body>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KqDIHMN7-1666254950102)(C:\Users\地狱魔爵人\Desktop\截图\2022-10\chrome_LCNL61lpdx.png)]
3、行内块元素的妙用技巧
- 相邻的行内块元素之间会有空白缝隙
- 行内块元素可以通过给padding设置大小 实现撑大盒子
- 行内块元素的大小默认是内容大小
4、CSS三角强化
width:0;
height:0;
border-color:transparent red transparent transparent
border-style:solid;
border-width: 22px 8px 0 0;
我们通常用 i 标签来制作此三角样式, i 标签为行内标签,通常行内标签没有宽度和高度,但是 i 标签的默认 display:block。