CSS样式

 

目录

1.语法风格&代码规范:

(1)语法规范

(2)注释

(3)代码风格

(4)注意事项

2.选择器分类

(1)基础选择器

1)标签选择器

2)类选择器

3)id选择器

4)通配符选择器

(2)复合选择器

1)后代选择器 (重要)

2)子选择器

3)并集选择器(重要)

(3)伪类选择器

1)链接伪类选择器(重要)

2):focus伪类选择器

3.CSS字体属性

(1)font-family:设置文字字体

(2)font-size:设置字体大小

(3)font-weight:调整字体粗细

(4)font-style:设置文字样式

(5)字体复合属性

4.CSS文本属性

(1)text-align:文本水平对齐方式

(2)color:文本颜色

(3)text-indent:文本缩进

(4)text-decoration:文本装饰

(5)line-height:行间距(行高)

5.CSS引入方式

(1)内部样式表:

(2)行内样式表:

(3)外部样式表:

6.Chrome调试工具

7.Emmet语法

(1)快速生成html结构

(2)快速生成css样式

(3)vscode中好用的功能

8.CSS元素显示模式

1.块元素:

2.行内元素(内联元素)

3.行内块元素

4.元素显示模式转换

9.文字垂直方向居中显示

10.CSS的背景属性

(1)background-color 背景颜色

(2)background-image 背景图片

(3)background-repeat 背景平铺

(4)background-position: x y; 背景图片的位置

(5)background-attachment 背景图像是否固定

(6)background: 背景样式的 复合性写法

(7)背景属性总结

11.CSS三大特性

1.层叠性

2.继承性

3.优先级

12.CSS盒子模型

(1)边框(border)

(2)内边距(padding)

(3)外边距(margin)

1)外边距典型应用:

2)外边距的合并:

3)嵌套块元素垂直外边距的塌陷

13.清除内外边距

14.PS

1.测量网页元素大小

2.PS切图:

15.案例总结:

16.圆角边框(重点)

17.盒子阴影(重点)

18.文字阴影

19.CSS浮动-float

1.float 属性:

2.浮动特性(重难点!)

(1)浮动元素会脱离标准流(脱标)

(2)浮动元素会一行内显示且沿着元素顶端对齐

(3)浮动的元素--都具有行内块元素的特性

(4)浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

(5)一浮全浮: 有一个孩子浮动了,其余的兄弟元素都要浮动才行,要不然没用。

3.清除浮动

清除浮动方法:

(1)额外标签法(隔墙法)

(2)父级元素添加 overflow属性(重点)

(3)父级元素添加 after伪元素(重点)(百度,网易,淘宝用此法)

(4)父级元素添加 双伪元素(重点)(小米,腾讯 用此法)

20.学习开发流程&遵循规则/思路/注意事项

21.CSS定位

1.相关知识:

1.1.定位模式:

1.2.边偏移:

2.定位

1.静态定位static

2.相对定位relative(重要)

3.绝对定位absolute(重要)

4.固定定位 fixed(重要)

5.粘性定位sticky

6.定位的总结:

7.定位叠放次序 z-index

8.定位知识拓展

9.案例--淘宝轮播图

22.元素的显示与隐藏

1.display属性(重点!!!!最常用)

2.visibility属性

3.overflow属性

4.案例:

CSS高级技巧:

1.精灵图 sprites

2.字体图标 iconfont

1.字体图标的下载

2.字体图标的引用:

3.CSS三角形

4.CSS用户界面样式

5.vertical-align属性&应用

6.常见布局技巧


属性手册网址:http://css.doyoe.com/

概念:CSS是层叠样式表(Cascading Style Sheets)/CSS样式表/级联样式表

1.语法风格&代码规范:

(1)语法规范:

选择器 {

       属性名: 属性值;

       属性名: 属性值;

}

(2)注释:

/* ctrl+/ */

(3)代码风格:

i.选择器后面带空格,属性名的冒号后面也带空格,这样比较舒服
ii.每个属性和属性值最好独占一行,属性值结尾别忘了分号;

iii.选择器,属性名,属性值 全部用小写字母,特殊情况除外

(4)注意事项:

px不可省略

<style>/* 语法规范:选择器{属性名:属性值;  属性名:属性值;} */p {color: blueviolet;font-size: 20px;   /*这里必须加px */}
</style>

2.选择器分类

(1)基础选择器

1)标签选择器

语法:HTML标签名称{…}  , 按照标签名分类。

作用:为某一类标签设置统一的CSS样式。

特点:不能差异化选择

优点:能快速为页面中 同类型的标签 设置统一样式。

缺点:不能设计差异化样式,只能选择全部的同类标签,太局限了。

使用频率:较多

<style>/* 标签选择器: 标签名 {……} */p {color: blueviolet;font-size: 20px;   /*这里必须加px */}div {color: blue;font-size: 30px;}    </style>
</head>
<body><h2>********************标签选择器************************</h2><p>所有p标签内文字,统一改变样式</p><p>所有p标签内文字,统一改变样式</p><p>所有p标签内文字,统一改变样式</p><div>所有div标签统一样式</div><div>所有div标签统一样式</div><div>所有div标签统一样式</div>
</body>
</html>

2)类选择器

语法:类名{ }   ,类名不同于标签名

调用:class属性="类名 类名 类名" 

        一个标签中是可以有多类名的,这些类名之间要用空格隔开

口诀:样式“点”定义,结构“类class”调用,一个或多个,开发最常用

作用:为一个或者某几个标签(class属性同的)设置样式。

特点:可以根据需求选择

使用频率:非常多

<style>/* 类选择器:  .类名{……}  调用:class属性=“类名”口诀:​样式“点”定义,结构“类class”调用,一个或多个,开发最常用 */.red {color: red;}.div-red {background-color: red;}.div-green {background-color: green;}.div-size {width: 100px;height: 100px;}</style>
</head>
<body><h2>********************类选择器************************</h2><ul><li class="red">风风风</li><li>花花花</li><li>雪雪雪</li></ul><h3>案例1:</h3>
<!--   多个类名之间,空格隔开 --><div class="div-red div-size"></div><div class="div-green div-size" ></div><div class="div-red div-size"></div>
</body>
</html>

3)id选择器

语法: #id名{ }  ,作为选择器,id名 不同于 标签名

调用:id属性="名"

口诀:样式“#”定义,结构“id”调用,只能调用一次,别人切勿使用

作用:为唯一一个标签设置样式

特点:id属性只能在HTML文档中出现一次

使用情况:一般配合javascript使用(id主要是针对js使用的,js中有个getElementById,在css和html中调用相同的id并不会报错)

/*id选择器: #id名	{……}  调用:属性id=“” 
口诀:样式“#”定义,结构“id”调用,只能调用一次,别人切勿使用*/
#name {color: pink;
}

4)通配符选择器

调用:无需调用

作用:把页面中<html>,<body>和其内的所有标签都改为相同的样式,不需要调用。

特点:选择的太多,有部分不需要

使用情况:特殊情况下使用,属性:margin或padding 用的比较多

* {margin: 0px;padding: 0px;
}

(2)复合选择器(两个/多个基础选择器,通过不同方式组合而成的)

1)后代选择器 (又称:包含选择器) (重要)

语法:父元素 子元素 {……} (空格隔开)

作用:

可选“父元素里面的所有(某标签)子元素”

子元素:所有在父元素内的标签都算在内

特点:可选 “所有子孙后代”

使用频率:较多

<style>/* 如果只把ol中的li变成紫色 ,ul中的li不变色*/ol li {color: rgb(129, 13, 239);}/* 如果有两个ul,想给其中一个里面的a标签变色,怎么搞?很简单,ul加个类名 */.a-haha li a {text-decoration: none;color: yellow;}</style>
</head>
<body><h2>**********复合选择器--后代选择器****************</h2><ul><li>嘻嘻</li><li>嘻嘻</li><li><a href="#">嘻嘻</a></li></ul><ul class="a-haha"><li>haha</li><li>haha</li><li><a href="#">haha</a></li></ul><ol><li>pppp</li><li>pppp</li><li><a href="#">pppp</a></li></ol></body>

2)子选择器

语法: 父元素 > 第一层子元素 {……}   

作用:可选“父元素里面的第一层子元素”

使用频率:较少

<style>/* div中 所有的a标签 均换颜色 */.son-a a {color: rgb(175, 63, 11);}/* div的只第一层孩子中的a 字体放大 */.son-a>a {font-size: 30px;}
</style>
<body><h2>**********复合选择器--子选择器****************</h2><div class="son-a"><a href="#">第一层孩子</a><p><a href="#">第二层孩子</a></p></div>
</body>

3)并集选择器(重要)

语法:元素1,元素2,元素3 {…}   (规范:各元素竖着写)(注:最后一个元素后无逗号)

作用:可以同时选择多组标签,同时为他们定义相同的样式

特点:可以用于集体声明

使用频率:较多

<style>
/*   同时给div,p,span,pig-family一家 添加同样的样式 */div,p,span,.pig-family {color: aquamarine;}
</style>
<body><div>第一</div><p>第二</p><span>第三</span><ul class="pig-family"><li>pig son</li><li>pig dad</li><li>pig mum</li></ul>
</body>

(3)伪类选择器

1)链接伪类选择器(重要)

语法:

a:link /*选择所有"未被访问的链接"*/

a:hover /*…"鼠标放上去不点击的链接"*/

a:visited /*鼠标点击后的链接样式*/

a:active /*鼠标点击不抬起时链接样式*/

(按照以上顺序书写,即LVHA的顺序,否则不生效)(实际开发中 a{},a:hover{} 常用)

作用:为链接添加特殊效果

特点:选择不同状态的链接

使用频率:最常用

注意:

  1. 实际开发中,需要单独给a指定样式才能生效,如果只是对a的上级body,p,div指定样式,对a没用的。
  2. 实际开发中,只用link和hover就足够了。
/****按顺序写LVHA!!!!****/
/* 未访问的链接a:link */
a:link {color: #333;text-decoration: none;font-size: 30px;
}/* 已访问过的链接:a:visited */
a:visited {color: orange;
}/* 鼠标经过时,不点击链接:a:hover */
a:hover {color: skyblue;
}/* 鼠标点击后,未松开时链接样式:a:active */
a:active {color: green;
}

2):focus伪类选择器

作用:选取 获得焦点的表单元素

特点:与form表单相关

使用频率:较少

<style>/* 获得光标的input表单元素选取出来 */input:focus {background-color: pink;color: red;}
</style>
<body><h2>**********复合选择器--focus伪类选择器****************</h2><input type="text"><input type="text"><input type="text">
</body>

3.CSS字体属性

(1)font-family:设置文字字体

多种字体时,用逗号隔开;从第一种字体开始检测,没有,再检测下一种字体,以此类推。

如果某字体是由多个单词加空格组成,那么要加单引号。

body{/*微软雅黑字体*/font-family: 'microsoft yahei', 'Times New Roman', Times, serif;
}

(2)font-size:设置字体大小

记得加px;不同浏览器默认大小不同;如果定义body,注意对标题标签是无效的。

body {font-size: 30px;
} 
h2{/*body设置的字体大小,对h1~h6无效*/font-size: 30px;
}

(3)font-weight:调整字体粗细

实际开发中更提倡用数字表示加粗或者变细,范围:100~900 整百

属性值:normal=400(默认) / bold=700 / bolder / lighter / 数字(不加px);

.bold {/*下面两种一样的效果,数字后面不用加px*/font-weight: 700; 
/* 等价于:font-weight: bold; */
}

(4)font-style:设置文字样式

属性值:normal--默认值;italic--斜体

p {font-style: normal; /* 让倾斜的字体不倾斜; */
}

(5)字体复合属性

注意:一定要按照font:font-style font-weight font-size/(line-height) font-family;这个顺序,少一个font不起效果,而且font-size和font-family绝对不可以省略,其他的都可以省略;空格隔开。

.font-sum{/*font-style: normal; font-weight: 700;font-size: 30px; font-family: '宋体';*//* 上方“四合一”: *//* 复合写法:font:font-style font-weight font-size/line-height font-family; */font: normal 700 20px/24px 'microsoft yahei';/* 复合写法:font:(省略font-style font-weight) font-size/line-height font-family; */font: 20px Times;
}

4.CSS文本属性

(1)text-align:文本水平对齐方式

属性值:

left(默认)

center

right

应用:行内元素/行内块元素--水平居中方法:给父盒子添加text-align:center;即可

(2)color:文本颜色

属性值:

颜色英文

#十六进制(最常用)

rgb(255 ,255 ,0 )或rgb(100%,20%,0%)

(3)text-indent:文本缩进

通常用em作单位,(em是相对单位(变化),1em=当前一个文字的大小(font-size),若当前元素没设置大小,则按照父元素一个字大小,如1em=16px)

也可以用px做单位,但是一般来说是2em,首行缩进2个字符

属性值:

数字em(常用)

数字px

(4)text-decoration:文本装饰

属性值:

none (默认)

无装饰线(取消下划线)

underline

下划线

overline

上划线

line-through

删除线

(5)line-height:行间距(行高)

属性值:

数字px

数字(小数也可) (常用) (如:行高1.5--行高为font-size的1.5倍)

技巧:行高=盒子的高度height=line-height),使文字垂直居中显示

行高=font-size+2*间距

  • 测量行高的方法:

(工具app:Faststone capture 用它去量)

<style>.font-text{/* 字体颜色 *//* color: pink;color: #ff0000; */color: rgb(39, 199, 232);/* 水平对齐方式 */text-align: left;/* 装饰文本---下划线     */text-decoration: underline;/* 文本缩进 */text-indent: 2em;/* 行高 */line-height: 25px;}.indent1{/* 文本缩进 */text-indent: -20px;}.indent2{/* 文本缩进 */text-indent: 20px;}
</style>
<body><p class="font-text">位置,颜色,装饰文本,缩进,行高</p><p class="indent1">文本缩进</p><p class="indent2">文本缩进</p>
</body>

5.CSS引入方式

(1)内部样式表:

位置:写在head里的<style>标签中,实际上<style>写在哪里都可以,通常写在head里。

作用区域:控制“当前整个html页面”

特点:没有实现 结构与样式完全分离

/*  在css文件中只有样式,没有标签 */
<style>div{color: aqua;}
</style>

(2)行内样式表

位置:写在标签属性里:<p style=“属性名属性值属性名:属性值…(css规范)”>少用,定义简单样式

作用区域:控制 “当前标签”

权重高

<p style="color: red; font-size: 25px; font-family: 'microsoft yahei';">行内样式</p>

(3)外部样式表:

位置:外部.css文件中,比较重要,常用!

作用区域:控制使用link引入的所有html文件

引入的步骤

1.新建css文件,把所有的css代码放进去(在css文件中只有样式没有标签)

2.在html文件中使用link来引入:rel意思是引用的是什么,stylesheet意思是引用的是一个表。

<!-- 引入外部样式表---CSS文件 -->
<head><link rel="stylesheet" href="css/style.css">
</head>

6.Chrome调试工具

打开调试工具:F12 或 右击->检查

7.Emmet语法

这一部分内容实际上就是vscode中的一些快捷键

引号内多行编辑的快捷键:shift + alt+鼠标点选

(1)快速生成html结构

(2)快速生成css样式

.emmet{text-align: center; 	/* tac →tab*/      text-indent: 2em;   	/* ti2em →tab */   width: 30px;   				/* w30 →tab*/height: 100px;    		/* h100 →tab*/line-height: 26px; 		/* lh26px →tab*/
}

(3)vscode中好用的功能:

保存时自动改为标准格式,设置→搜索format→找到format on save勾选

8.CSS元素显示模式

1.块元素:

常见块元素:<h1>~<h6>,<p>,<div>,<ul>,<ol>,<li>等,<div>最典型的块元素

块元素的特点:

1.比较霸道,自己独占一行

2.高度,宽度,外边距,内边距 都可以控制

3.默认宽度是容器(父级宽度)的100%

4.是一个容器及盒子,里面可以放 “行内元素 或 块元素”

注意:"文字类元素"内不能放"块级元素",如<p>,<h1>标签 里面都不能放块元素<div>

2.行内元素(内联元素):

常见的行内元素:<a>,<del>,<s>,<ins>,<u>,<span>等,<span>最典型的行内元素

行内元素的特点

1.相邻行内元素在一行上,一行可以显示多个。

2.高,宽 直接设置无效的 (可放入块中)

3.默认宽度就是它本身内容的宽度

4.行内元素只能容纳文本或其他行内元素

注意: <a>里不能再放<a>

特殊情况下,<a>里可以放块级元素,例如:

这一大块都是链接,在这一大块里再放商品图片,介绍,价格等,这种情况下“把a转换成块级元素”比较好

3.行内块元素:

同时具有块元素行内元素的特点:<img/>,<input/>,<td>

特点

1.和相邻行内元素(行内块元素)在一行上,但是它们之间会有空白缝隙,一行可以显示多个(行内元素特点)

2.默认宽度就是本身内容宽度(行内元素特点)

3.宽度,高度,行高,外边距,内边距都是可以控制的(块元素特点)

4.元素显示模式转换:

  • 在css中使用:display: block;  ----行内元素 改为 块元素
  • 在css中使用:display: inline;  ----块元素 改为 行内元素
  • 在css中使用:display: inline-block;-  ---行内元素 改为 行内块元素

把行内元素a转换为块级元素(为了增加a标签链接的点击范围),拥有块级元素的特点,如:独占一行,而且修改它的宽度和高度是有效的。

<style>/* a,img转化为 块元素 */.block {font-size: 30px;width: 200px;height: 100px;background-color: blueviolet;color: yellow;display: block;padding: 1%;}/* p转化为行内元素 */.p-inline {background-color: #333;display: inline;}/* div-块元素 */.div-block {width: 300px;height: 300px;background-color: #666;}/* input-行内块元素 */.input-inline-block {width: 200px;height: 40px;background: pink;}
</style>
<body><h2>******************行内元素/块元素/行内块元素*********************</h2><a href="#" class="block">行内元素</a><br><img src="images/baidu.png" alt="wrong" class="block">img行内元素->block<p class="p-inline">块元素->inline</p><div class="div-block">块元素</div><input type="text" class="input-inline-block">行内块元素<input type="text" class="input-inline-block">行内块元素</body>

运行结果:

9.文字垂直方向居中显示

  • 技巧:行高=盒子的高度height=line-height),使文字垂直居中显示
  • line-height>height,文字垂直偏下
  • line-height<height,文字垂直偏上
p {width: 230px;/* 技巧:行高=盒子的高度,使文字垂直居中显示*//*height=line-height */height: 40px;  font: 14px/40px 'microsoft yahei';background-color: rgb(85, 88, 89);
}
a:hover {background-color: orange;
}

10.CSS的背景属性

(1)background-color 背景颜色:

属性值transparent 透明(默认)color 颜色

rgba(r,g,b,a); 背景色半透明

(CSS3新增属性,IE9+浏览器才支持)

注:rgba(r,g,b,a):里面的四个参数中,a是alpha透明度,是控制透明程度的,取值在0~1之间(0:100%透明,1:不透明),如0.3的0可以省略,写.3也是可以的

(2)background-image 背景图片:

开发中常见于:logo,装饰性图片,超大背景图片,精灵图

优点:便于控制位置

属性值

none (默认)

url ( url地址 )

(3)background-repeat 背景平铺:

属性值

repeat

平铺 (默认)

no-repeat

不平铺

repeat-x

水平方向平铺

repeat-y

垂直方向平铺

(4)background-position: x y; 背景图片的位置:

属性值:方位词 (x,y顺序无关)

属性值:精确单位(x,y顺序固定,先x后y)

x坐标

left  /  center  /  right

%  /  由浮点数字和单位标识符组成的长度值

y坐标

top  /  center  /  bottom

%  /  由浮点数字和单位标识符组成的长度值

注意事项:

1.如果x,y都是方位名词,则两个值前后顺序无影响,如: right center 和 center right一样

2.如果x,y都是方位名词,只写其中一个,则另一个默认是center

3.如果x,y都是精确单位,则第一个一定x,第二个一定是y

4.如果x,y都是精确单位只写其中一个(这个一定是x),y默认center

5.如果x,y都是混合两种情况只写其中一个(这个一定是x),y默认center

(5)background-attachment 背景图像是否固定(网页滚动时,图片是否随之滚动):

后期可以制作视差滚动的效果

属性值

scroll 滚动(默认)

fixed 固定

(6)background: 背景样式的 复合性写法:

惯用顺序:background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置;

提示:背景图片 在 背景颜色 上方显示

/* 背景颜色/图片,背景图片在背景颜色上方显示 */
.div-bgcolor {width: 200px;height: 200px;background-color: red;background-image: url(images/baidu.png);/*不平铺*/background-repeat: no-repeat;  /*水平方向平铺*/background-repeat: repeat-x;   /*垂直方向平铺*/background-repeat: repeat-y;   /*背景图片的位置-水平居中垂直top*/background-position: center top;  /*与上一行效果一样!!!*/background-position: top center;    /*背景图片的位置-水平靠左垂直居中---x轴left,y轴默认center*/background-position: left;   /* xy为精确单位 */background-position: 20px 50px;background-position: 20px ; /*同:20px center*//*混xy为合单位*/   /*上下二者--效果相同!!*/background-position: 20px center;background-position: 20px top;
}
body {/* 惯用顺序:background: 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置; */background: purple url(images/temperature.png) no-repeat fixed center top;
}
.half {/*半透明*/background: rgba(0, 0, 0, .3);
}

技巧:

  • 小的装饰性图片:不用img标签,用背景图片-不平铺-定位置
  • 超大图片插入:不用img标签,用背景图片-不平铺-定位置crnter top;

(7)背景属性总结:


11.CSS三大特性

1.层叠性

“后设置的样式”会覆盖“前设置的样式”

  • 样式冲突时,层叠覆盖
  • 样式不冲突,不层叠
div {color: black;font-size: 15px;
}
div {/*  颜色黑会被红色覆盖掉,但是字体大小却不会有变化 */color: red;
}

2.继承性

“子标签”继承“父标签”的某些样式(主要是text-、font-、line-等开头的,以及color属性)

<style>
/* 继承性 */
/*如下面这样设置的话,p标签中的文字也会变成黑色20px,继承了div中的属性 */
div {color: rgb(228, 61, 61);font: 20px/1.5 'microsoft yahei';
}
</style>
</head><div><p>并不是所有的属性都继承,只继承文字相关的属性</p>
</div>

3.优先级

3.1.当一个元素指定多个选择器,就会有优先级的产生

  • 选择器相同,则执行层叠性
  • 选择器不同,则根据选择器权重执行

3.2.子元素继承的权重是0,如果该元素没有直接选中,那么不管父元素权重有多高,子元素得到的权重都是0。

3.3.<a>默认指定了样式(蓝色,有下划线)(即:a{color: blue},优先级大于0),所以不继承父标签的样式

3.4.优先级中权重的叠加问题

复合选择器会有权重叠加的问题,元素会选择权重高的去使用。

权重会叠加,不会进位,如:(0,0,0,11)

权重:元素选择器<类选择器<id选择器<标签内style样式<!important

<style>/* 优先级 :元素选择器<类选择器<id选择器<标签内style样式< !important  *//* 优先级: div < .test < #test < style="color: ;" < color: red!important */div {color: red!important;}.test {color: yellow;}#test {color: blue;} /*继承的权重是0 *//*所以,以后看标签到底执行哪个样式,就先看这个标签有没有直接被选出来 */.power {color: pink;}p {color: orange;}/* 复合选择器 有 权重叠加 的问题 *//* li权重:0,0,0,1     1*/li {color: red;}/*  *************权重会叠加,不会进位:0,0,0,11. **************  *//* ul+li的权重:0,0,0,1 + 0,0,0,1=0,0,0,2    2*/ul li {color: blue;}/* .wanan+li的权重:0,0,1,0 + 0,0,0,1=0,0,1,1    11*/.wanan li {color: yellow;}/* .first 权重 10<11 ,无法更改上方11的颜色*/.first {color: aqua;}/* .wanan .first权重20>11,可以更改颜色 */.wanan .first {color: aqua;}</style>
<body><div class="test" id="test" style="color: purple">倔强</div><span class="power"><p>继承power的权重是0 < p{} 的权重</p></span><ul class="wanan"><li class="first">几人份的畅谈</li><li>道三两句晚安</li><li>惹多情的遐想</li><li>却轻易地走散</li></ul></body>

12.CSS盒子模型

CSS盒子模型本质上是一个盒子,封装周围的HTML元素

主要包括:border边框、外边距margin、内边距padding,内容content

(1)边框(border)

边框会影响盒子的实际大小,解决方案:(1.测量时不测边框;2.测量边框,width/height减去边框宽度)

属性

属性值

border-width

边框的宽度(粗细)

px

border-style

边框的样式

none 无|solid 实线|dashed 虚线|dotted 点线|

hidden|double|groove|ridge|inset|outset

border-color

边框的颜色

color|rgb|#十六进制

  • 边框属性的复合写法

属性

border:1px solid red;

(没有顺序)

border-top

border-bottom

border-left

border-right

❗️注意:「 层叠性 」:border 和 四边分别设置 的前后顺序,后者会覆盖前者

  • 合并相邻边框 的属性:

border-collapse: collapse;

/* CSS盒子模型---边框-宽度|样式|颜色*/
.box {border-width: 3px;border-style: dashed;border-color: rgb(172, 232, 181);/* 三合一--复合写法 */border: 3px dashed greenyellow;/* 	边框的四边---可以分别设置 *//* 边框(四边可分别设置) */border-bottom: 3px dashed rgb(157, 247, 23);border-top: 3px solid rgb(7, 142, 27);border-left: 3px dotted rgb(67, 184, 67);border-right: 3px dashed rgb(4, 103, 4);
}

(2)内边距(padding)

padding会影响盒子的实际大小,调整width/height减去padding

  • padding不会撑开盒子的大小:盒子本身 没有指定 width/height属性;
  • padding不会撑开盒子的大小:如果父元素指定了width,那么在子元素中没有指定width,给子元素添加padding不会撑开盒子
  • padding会撑开盒子的大小:盒子本身 指定了 width/height属性

技巧padding会撑开盒子,在字数不一的导航栏,不设置width,而设置padding,使得间距一致

属性

padding

(复合写法)

padding-left

padding-right

padding-top

padding-bottom

(3)外边距(margin)

复合写法中,值的个数-表达意思 同padding上表。

属性

margin

(复合写法)

margin-left

margin-right

margin-top

margin-bottom

1)外边距典型应用:

  • 块盒子水平居中,必须满足两个条件:

        1.盒子必须指定宽度width

        2.左右外边距设为auto,即:margin:0 auto;(上下0,左右居中)

  • 行内元素 / 行内块元素水平居中

        给其父元素添加属性 text-align:center;

2)外边距的合并:

注:浮动的盒子--不会有外边距合并的问题

  • 上下相邻块元素,垂直外边距的合并

上边有:margin-bottom

下边有:margin-top

则:垂直距离为:不是二者之和,而是:取两个值中较大者

解决方案:只给一个盒子设置margin值

3)嵌套块元素垂直外边距的塌陷

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距,同时子元素也有上外边距,此时父元素会塌陷较大(父元素和子元素的margin-top比较)的外边距值

解决方案:

1.为父元素定义上边框 border-top: 1px solid transparent;

2.为父元素定义上内边距 padding-top:1px;

3.为父元素添加 overflow:hidden;

(其他方法:浮动/固定/绝对定位的盒子不会有塌陷问题,这三个方法都是脱标的,也就是说脱标的元素是不会出现外边距合并和塌陷的问题的。)

13.清除内外边距

网页元素自带边距-F12查看,不同浏览器默认值不同;所以布局前清除网页元素默认的内外边距

* {margin: 0;padding: 0;
}

注: 行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距(很多时候不起效果)。

        块元素和行内块元素,可以设置上下左右的内外边距。

14.PS

1.测量网页元素大小

2.PS切图:

1.选图层(多图层组合时可以合并)-右击-导出png

2.cutterman---ps插件

3.像素大师 pc软件--放入图片,鼠标悬浮上方,自动显示大小

15.案例总结:

(1)小米商品模块

<!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>Redmi shop</title><style>* {margin: 0px;padding: 0px;}body {background-color: #f5f5f5;}.box {width: 420px;height: 600px;border: 1px solid rgb(198, 193, 193);margin: 0 auto;}a {color: black;text-decoration: none;}img {/* 图片宽度和父亲一样宽 */width: 100%;}.box>p {height: 140px;font: 23px 'microsoft yahei';/* 因为没有width属性,所以padding不会撑开盒子的宽度 */padding: 0 20px;margin-top: 20px;}.appraise {width: 400px;padding-left: 20px;margin-top: 10px;font: 14px 'microsoft yahei';color: #b0b0b0;}.info {margin-top: 20px;padding: 0 20px;background-color: pink;}.info h4 {/* width: 260px; */
/* 块元素->转化为行内块元素后,可以实现同一行显示,!!!但是他们之间会有大的空白缝隙!!!很难控制!!! */display: inline-block;font: 18px 'microsofe yahei';font-weight: 400;}.info p {/* width: 30px; */display: inline-block;color: rgb(174, 171, 171);margin: 0 25px 0 35px;/* background-color: green; */}.info span {/* width: 50px; */display: inline-block;color: orange;/* background-color: purple; */}</style>
</head><body><div class="box"><img src="../images/produce.png" alt="无线蓝牙耳机img" /><p><a href="#">快递牛,整体不错蓝牙可以秒连,红米给力</a></p><div class="appraise">来自于117384232的评价</div><div class="info"><!-- 商品名称 属于标题,恰当地使用标签!!!!  --><h4><a href="#">Redmmi AirDots真无线蓝…</a></h4>    <p>|</p><span>99.9元</span></div></div>
</body></html>

❗️注:块元素->转化为行内块元素后,可以实现同一行显示,!!!但是他们之间会有大的空白缝隙!!!很难控制!!!

(2)快报模块

<!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>快报模块</title><style>* {margin: 0px;padding: 0px;}.box {width: 248px;height: 163px;border: 1px solid grey;color: #797676;font-family: 'microsoft yahei';margin: 0 auto;}.title {height: 32px;font-size: 14px;line-height: 32px;/* 字体粗细,值-无单位 */font-weight: 400;border-bottom: 1px dotted grey;padding: 0 15px;}li {list-style: none;}.box ul {margin-top: 7px;}.box ul li {/*垂直居中 */height: 23px;line-height: 23px;padding-left: 20px;}.box ul li a {font-size: 12px;text-decoration: none;color: #666;}.box ul li a:hover {text-decoration: underline;}</style>
</head><body><div class="box"><h3 class="title">优品购快报</h3><ul><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】爆款耳机5折秒!母亲节</a></li><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】爆款耳机5折秒!</a></li><li><a href="#">【特惠】爆款耳机5折秒!立省1000</a></li></ul></div>
</body>
</html>

16.圆角边框(重点)

在CSS3中新增了圆角边框的样式,这样盒子就可以变成圆角。

属性语法:border-radius:数字px|数字% ---(圆角半径); (%:半径是盒子宽度和高度的占比)

border-radius: 100px;
/*效果同上100px ,宽高200px*/
border-radius: 50%;
/*四个值:四个角的弧度分别设置*/
border-radius: 10px 45px 30px 15px;
/*两个值:左斜对角,右斜对角*/
border-radius: 40px 10px;
/*四个角分开设置*/
border-top-left-radius: 10px;
border-top-right-radius: 20px;
border-bottom-left-radius: 30px;
border-bottom-right-radius: 40px;

17.盒子阴影(重点)

盒子阴影部分不占空间

属性语法:box-shadow: h-shadow v-shadow blur spread color inset;

前两个,第四个-均可负值

前两个必写,其他可省略

模糊距离:影子的实虚,边界是否清晰

阴影尺寸:影子的大小

颜色常用:rgba(0,0,0,.3);

默认outset,(❗️但不可写明写outset,这样影子效果消失)

box-shadow: 10px 10px 10px -4px rgba(0, 0, 0, .3);
  • 鼠标经过时,盒子出现阴影效果:
div:hover{box-shadow: 10px 10px 10px -4px rgba(0, 0, 0, .3);
}

18.文字阴影

属性语法:text-shadow:h-shadow v-shadow blur color;

text-shadow: 5px 5px 5px rgba(0, 0, 0, .3);

19.CSS浮动-float

传统网页的布局:标准流、浮动、定位。通常一个网页是由这三种布局共同构成的

浮动-最典型应用:多个块元素一行排列显示

❗️why need float:块元素->转化为行内块元素后,可以实现同一行显示,!!!但是他们之间会有大的空白缝隙!!!很难控制!!!

  • 网页布局第一准则:

        多个块元素纵向排列---标准流,横向排列---浮动。

        先用标准流的父元素排列上下位置,然后内部子元素使用浮动来排列左右(开发中采用策略--浮动子集与标准流父级 搭配使用)

  • 网页布局第二准则:

        先设置盒子大小,再设置盒子位置。

1.float 属性:

作用:创建浮动框,将其移动到一边,直到左/右边缘/包含块/另一个浮动框边缘

属性值:float:none 不浮动(默认)|left 元素向左浮动|right 元素向右浮动

2.浮动特性(重难点!)

(1)浮动元素会脱离标准流(脱标)

1.浮动元素会脱离标准流的控制(浮),移动到指定位置(动)---(俗称:脱标)

2.脱标的盒子不再保留原来的位置

(2)浮动元素会一行内显示且沿着元素顶端对齐

注:

1.浮动的元素是相互贴在一起的没有缝隙

2.如果父级宽度装不下这些盒子,那么多出的盒子会另起一行对齐。

(3)浮动的元素--都具有行内块元素的特性

任何元素(行内元素/块级元素)都可以添加浮动,添加浮动后,都具有行内块元素的特性。

所以:

1.如果给行内元素加了浮动,不需要再转换为块级/行内元素,就可以直接给宽度和高度

2.如果块级元素没有设置宽度,默认和父级一样宽,但是设置了浮动之后,宽度大小根据内容来决定(行内快元素的特点)

(4)浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

例:son1不浮动,son2浮动,son3部浮动,结果:

上图:son1与son2紧贴,son3位于son2下方,son2-float,son3占据son2原来位置

(5)一浮全浮: 有一个孩子浮动了,其余的兄弟元素都要浮动才行,要不然没用。

3.清除浮动

为什么要清除浮动?因为父级盒子在很多情况下不方便给高度(如产品很多,要不断往里加,或者左右栏内容不一样多),但是子盒子浮动又不占有位置,最后父级盒子高度变成0,会影响后面的布局。

  • 清除浮动的本质

清除浮动元素造成的影响。

如果父盒子本身有高度,那么不需要清除浮动

清除浮动之后,父级盒子会根据浮动的子盒子自动检测高度,父级有了高度就不会影响后面的标准流了。

  • 清除浮动的属性: clear:left|right|both (开发中只用both) 

  • 清除浮动的策略:闭合浮动(浮动只在父盒子内部影响,不影响外部其他盒子)

清除浮动方法:

(1)额外标签法(隔墙法)

  • 在浮动的元素后面添加一个新的标签(必须是块级元素),然后新的标签使用clear:both设置浮动

/* 父盒子未设置高度,子盒子浮动后,不占父盒子空间,父元素height=0 */
.q-box {border: 1px solid red;
}.q-damao,
.q-ermao {float: left;width: 200px;height: 200px;margin-left: 100px;background-color: orange;
}
/* 清除浮动---并且子元素多高,父元素就多高*/
.clear {clear: both;
}.q-footer {height: 100px;background-color: green;
}
<div class="q-box"><div class="q-damao">大猫</div><div class="q-ermao">二毛</div><div class="clear"></div>
</div>
<div class="q-footer"></div>

(2)父级元素添加 overflow属性(重点)

  • 给父级添加属性:overflow:hidden (最常用)|auto|scroll;

        优点:代码简洁;缺点:是无法显示溢出的部分,溢出的部分直接就被切掉看不见了。

.box {/* 清除浮动 */overflow: hidden;
}

(3)父级元素添加 after伪元素(重点)(百度,网易,淘宝用此法)

额外标签法的升级版(利用CSS添加一个新盒子),相当于往后面加了个块堵住,添加下面css代码:

/* 清除浮动--css在大盒子 最后方 生成一个空盒子*/
单 :after 为了兼容低版本浏览器;意思同---双::after
.clearfix:after {content: "";display: block;height: 0;clear: both;visibility: hidden;
}.clearfix {/* IE6,7专有 */*zoom: 1;
}
<!--父元素调用一下clearfix类--><div class="q-box clearfix">

(4)父级元素添加 双伪元素(重点)(小米,腾讯 用此法)

在after的基础上再加一个,也就是头上和尾巴都堵住,添加下面的css代码:

/* 清除浮动--css在大盒子的 最前方,最后方 生成一个空盒子*/
.clearfix:after,
.clearfix:before {content: "";display: table;
}.clearfix:after {clear: both;
}.clearfix {/* IE6、7专有 */*zoom: 1;
}
<!--父元素调用一下clearfix类--><div class="q-box clearfix">

20.学习开发流程&遵循规则/思路/注意事项

工具:ps-vscode-chrome

·CSS 属性书写顺序(重点)建议遵循以下顺序:

1.布局定位属性:display / position/ float / clear / visibility / overflow(建议 display第一个写,毕竟关系到模式)
2.自身属性:width / height / margin/ padding / border/ background
3. 文本属性:color/ font / text-decoration / text-align/ vertical-align / white- space / break-word
4. 其他属性(CSS3) : content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient...

·页面布局整体思路

(为了提高网页制作的效率,布局时通常有以下的整体思路)

1.必须确定页面的版心(可视区),我们测量可得知。
2. 分析页面中的行模块,以及每个行模块中的列模块。(页面布局第一准则)
3.一行中的列模块经常浮动布局,先确定每个列的大小,之后确定列的位置。(页面布局第二准则)
4 制作HTML结构。我们还是遵循,先有结构,后有样式的原则。结构永远最重要
5. 所以,先理清楚布局结构,再写代码尤为重要。这需要我们多写多积累

·注意:

1.导航栏---实际开发中 ,我们不会直接用链接a,而是用li包含链接(li+a)的做法。

原因:1.lit+a 语义更清晰,一看这就是有条理的列表型内容。 2.如果直接用a,搜索引擎容易辨别为有堆砌关键字媒疑(故意堆砌关键字容易被搜索,引擎有降权的风险),从而影响网站排名。

2.让导航栏一行显示,给li加浮动,因为li是块级元素,需要一行显示。

3.技巧:nav导航栏可以不给宽度,将来可以继续添加其余文字。

4.技巧:因为导航栏里面文字不一样多,所以最好给链接 a 左右padding 撑开盒子,而不是指定宽度。

5.按钮button默认有边框。需要我们手动去掉。

21.CSS定位

1.相关知识:

为什么需要定位?浮动和标准流都无法实现的效果,需要定位来是实现。

定位:是让盒子自由的在某个盒子内移动位置,或者固定在屏幕中的某个位置,并且可以压住其他盒子。

定位=定位模式+边偏移

1.1.定位模式:

决定元素的定位方式

属性:position

属性值:static 静态定位|relative 相对定位|absolute绝对定位|fixed 固定定位

1.2.边偏移:

定位的盒子移动的最终位置

四个属性:top|bottom|left|right

2.定位

1.静态定位static(了解,很少用)

特点:

        元素的默认定位,无定位的意思

        按标准流特性摆放位置,没有边偏移

语法: 选择器{ position:static;}

2.相对定位relative(重要)

特点:

        相对于-它原来的位置而言的

        标准流中继续占有原来位置(不脱标)

语法: 选择器{ position:relative;}

/* 相对定位--以自身为参照 */
position: relative;
top: 100px;
left: 100px;

3.绝对定位absolute(重要)

特点:

        相对于-祖先级元素而言的

        随滚动条滚动

        祖先级元素-没有定位!!!相对于浏览器文档定位

        祖先级元素-有定位!!!(绝对,相对,固定定位),son相对于-最近一级有定位的祖父级元素为参考

        标准流中不再占有原来的位置(脱标)

语法: 选择器{ position:absolute;}

  • “子绝父相”

(如果子集用绝对定位的话,父级要用相对定位)

子绝父相也不是绝对的,如果遇到父元素不需要占有位置子绝父绝也是存在的。

1.子集绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。

2.父盒子需要加定位,限制子盒子在父盒子里的显示

3.父盒子布局时,需要占有位置,要不然页面结构就乱了,所以父亲只能是相对定位

总的来说,父级需要占有位置,用相对定位,子盒子不需要占有位置,用绝对定位。

<style>
/* 父亲未定位,son以浏览器为参照 */.father1 {width: 200px;height: 200px;background-color: lightskyblue;}.son1 {width: 150px;height: 150px;background-color: lightcoral;position: absolute;/* 浏览器左上角 *//* top: 0;left: 0; *//* 浏览器左下角 *//* bottom: 0;left: 0; *//* 浏览器右上角 */top: 0;right: 0;/* 浏览器右下角 *//* bottom: 0;right: 0; */}/* 父亲定位了,son以父级元素为参照 */.father2 {width: 200px;height: 200px;background-color: lightskyblue;position: relative;left: 300px;}.son2 {width: 150px;height: 150px;background-color: lightcoral;position: absolute;top: 40px;right: 20px;}/* 爷爷定位了,父亲未定位,son以爷爷为参照 */.grandfather3 {width: 200px;height: 200px;background-color: lightskyblue;position: relative;left: 50px;}.father3 {width: 150px;height: 150px;background-color: rgb(63, 164, 227);}.son3 {width: 100px;height: 100px;background-color: lightcoral;position: absolute;bottom: 0px;right: 0px;}.grandfather4 {width: 200px;height: 200px;background-color: lightskyblue;position: relative;left: 500px;}/* 绝对定位--不占据原来位置,被下一个占有 */.grandfather4 .brother1 {width: 60px;height: 70px;background-color: lightcoral;position: absolute;left: 5px;top: 80px;}.grandfather4 .brother2 {width: 200px;height: 200px;background-color: rgb(207, 160, 160);}</style>
</head><body><h3>***************相对定位***************</h3><div class="box1">borther1</div><div class="box2">brother2</div><h3>***************绝对定位***************</h3><div class="father1">father1未定位<div class="son1">son1</div></div><div class="father2">father2已定位<div class="son2">son2</div></div><div class="grandfather3">grandfather3已定位<div class="father3">father3未定位<div class="son3">son3</div></div></div><div class="grandfather4">grandfather4已定位<div class="brother1">brother1绝对定位</div><div class="brother2">brother2占据brother1的位置</div></div>
</body>

4.固定定位 fixed(重要)(特殊的绝对定位)

固定于浏览器可视区的位置。

特点:

        以浏览器的可视窗口为参照点移动元素。

        跟父元素没有任何关系

        不随滚动条滚动

        不占有原先位置(脱标)

主要使用场景:

        浏览器页面滚动时,元素位置固定不变。

语法: 选择器{ position:fixed;}

  • 固定在版心右侧位置:

1.先让固定定位的盒子 left:50%,走到整个页面的一半位置

2.再让该盒子 margin-left:正的(版心宽度的一半)

  • 固定到版心左侧位置:

1.left:50%; 移动到浏览器的一半(中轴线)

2.margin-left:负的(版心宽度的一半+广告盒子自身的宽度) (左移--负数)

/* 网页两侧广告 */
/* 版心左侧广告位置 */
.ad1 {width: 200px;height: 500px;position: fixed;top: 300px;/* 固定到---版心左侧--方法:1.left:50%; 移动到浏览器的一半(中轴线)2.margin-left:(版心宽度的一半+广告盒子自身的宽度) */left: 50%;margin-left: -830px;
}.ad1 img {width: 100%;height: 500px;
}
/* 版心右侧广告位置 */
.ad2 {width: 200px;height: 500px;/* 固定定位 */position: fixed;top: 300px;/* 固定到---版心右侧--方法:1.left:50%; 移动到浏览器的一半(中轴线)2.margin-left:(版心宽度的一半) */left: 50%;margin-left: 630px;
}.ad2 img {width: 100%;height: 500px;
}

效果如下:(两侧的广告) 

5.粘性定位sticky(了解,不常用,IE浏览器不支持)(网上大多是通过javascript实现的效果)

相对定位 和 固定定位 的混合

语法: 选择器{ position:sticky;top:10px;}

特点:

        以浏览器的可视窗口为参照点移动元素。(固定定位的特点)

        占有原来位置。(相对定位的特点)

        必须添加top,left,right,bottom其中一个才有效

.stick {width: 50px;height: 300px;background-color: pink;
/*   粘性定位: */position: sticky;/* 此盒子移动到距离浏览器上边缘100px时,不再随浏览器滑动 */top: 100px;
}

6.定位的总结:

  • 注:既有left,又有right时,优先执行left
  • 注:既有top,又有bottom时,优先执行top

7.定位叠放次序 z-index

使用定位布局时,用于控制盒子重叠的先后顺序(谁在上,谁在下)

语法:选择器{ z-index:1;}

属性值:auto 默认|0|正整数|负整数 (负<auto=0<正)

  • 规则:

1.数值越大,盒子越靠上

2.数值相同,按书写顺序,右者在前者上方

3.数值无单位!!!

4.只有定位的盒子,才有此属性

/* 定位的重叠现象 z-index    -1 < auto = 0 */
.box-x {position: absolute;left: 0px;
}.box-one {width: 500px;height: 500px;background-color: pink;z-index: -1;
}.box-two {width: 400px;height: 400px;background-color: rgb(162, 51, 70);z-index: auto;
}.box-three {width: 450px;height: 300px;background-color: rgb(192, 13, 43);z-index: 0;
}

8.定位知识拓展

1.绝对定位盒子--居中效果的实现

由于:加了“绝对定位”的盒子,给属性margin:0 auto;---不会实现水平居中

  • “绝对定位的盒子”实现水平居中的算法:

1.left=父容器宽度的50%;

2.margin-left:负的自身盒子宽的一半

  • “绝对定位的盒子”实现垂直居中的算法:

1.top=父容器高度的50%;

2.margin-top:负的自身盒子高的一半

.r-middle {/* “绝对定位的盒子”实现水平居中的算法:1.left=父容器宽度的50%;2.margin-left:负的自身盒子宽的一半 */position: absolute;left: 50%;margin-left: -50px;
}
.c-middle {/* “绝对定位的盒子”实现垂直居中的算法:1.top=父容器高度的50%;2.margin-top:负的自身盒子高的一半 */position: absolute;top: 50%;margin-top: -50px;
}

2.定位特殊特性:

  • “绝对定位”,“固定定位”浮动,类似特性:

1)行内元素添加-“绝对定位”“固定定位”(相对定位不行),可以直接设置宽度和高度(不需display:block)

/* 绝对定位 */position: absolute;/* 相对定位 */position:fixed;top: 0;width: 100px;height: 100px;background-color: #622b2b;

2).块级元素添加-“绝对”或“固定定位”,如果不给宽高,默认大小是内容大小(width和文字一样宽)。(不定位的div不设宽度,默认100%)

3.脱标(标准流中不占位置)的盒子-不会触发“外边距塌陷”

4.“绝对定位”“固定定位”----会完全压住盒子

为啥浮动压不住文字呢?因为浮动的发明最开始是做文字环绕效果的。(如:word中,文字中插入图片,文字环绕在四周,不遮挡文字)

  • 浮动----只会挡住它下面标准流的盒子,但不会挡住标准流盒子里面的文字或者图片
  • 绝对定位(固定定位)----会压住下面标准流的所有内容(图+文字)

9.案例--淘宝轮播图

轮播图中小圆点-- ul > li背景图,圆角边框

/* 案例-轮播图*/
.tb-promo {/* 子绝父相 */position: relative;left: 10px;width: 840px;height: 628px;background-color: pink;
}/* 轮播图片 */
.tb-promo img {width: 100%;
}/* 轮播图-左右箭头 */
.tb-promo .prev,
.tb-promo .next {position: absolute;
/*   垂直居中 */top: 50%;margin-top: -25px;width: 30px;height: 50px;background-color: rgba(0, 0, 0, .3);font-size: 30px;line-height: 50px;text-align: center;text-decoration: none;color: #fff;
}.tb-promo .prev {left: 0px;border-radius: 0 20px 20px 0;
}.tb-promo .next {right: 0px;border-radius: 20px 0 0 20px;
}/*****!!!!!!!!轮播图小圆点!!!!!!!******/
.point ul {position: absolute;bottom: 20px;
/*   水平居中 */left: 50%;margin-left: -50px;width: 90px;height: 20px;background-color: rgba(255, 255, 255, .3);border-radius: 20px;
}.point ul li {float: left;margin: 4px;width: 10px;height: 10px;background-color: #fff;border-radius: 50%;list-style: none;
}.point ul .selected {background-color: #ff5000;
}
<h3>***************定位--案例--淘宝轮播图***************</h3><div class="tb-promo"><img src="images/produce.png" alt=""><a href="#" class="prev">&lt;</a><a href="#" class="next">&gt;</a><div class="point"><ul><li class="selected"></li><li></li><li></li><li></li><li></li></ul></div></div>

22.元素的显示与隐藏

类似网站广告,点击叉号就不见了,但是刷新页面又会重新出现。

本质:让一个元素在页面隐藏或显示。

1.display属性(重点!!!!最常用)

用来设置一个元素如何显示,后面应用非常广泛搭配JS可以做很多网页特效。

属性:

display: none; (隐藏对象)(用得最多)

display:block;(显示对象)(作用:“转换成块级元素”,“显示对象”)。

注意:display隐藏元素后,不再占有原来的位置

2.visibility属性

visibility: visible; (元素可见)(常用)

visibility: hidden; (元素隐藏)(常用)

visibility: inherit; (继承父对象的可见性)

visibility: collapse; (隐藏表格的行/列,很少使用)

注意,visibility隐藏元素后,会占有原来的位置

3.overflow属性

指定了:一个元素的框中内容(超出其指定宽度及高度),会发生溢出,溢出内容是否显示。

overflow: visible;(默认)不剪切,也不加滚动条,内容超出盒子显示。

overflow: hidden;超出部分直接隐藏,也没有滚动条。

overflow: auto;(根据文字长度而定)超出-自动添加滚动条;未超出-不添加滚动条。

overflow: scroll;总显示滚动条,不管内容是否超出。

注:如果有定位的盒子慎用overflow: hidden;

(因为可能定位的盒子会有一小部分在父盒子外边,那这样就会直接把多余的切掉了,这可不行。比如学成在线那个hot小标签)

4.案例:

/* 案例-显示/隐藏 */
.pic {/* 子绝父相 */position: relative;left: 10px;width: 840px;height: 628px;background-color: pink;
}/* 轮播图片 */
.pic img {width: 100%;
}.hid {position: absolute;top: 0;left: 0;/* 隐藏 */display: none;width: 840px;height: 628px;背景图颜色+图片(不重复+定位)background: rgba(0, 0, 0, .3) url(images/radio.png) no-repeat center;
}
/* 当鼠标经过图片,内部遮罩层显示出来 */
.pic:hover .hid{/* 显示 */display: block;
}
    <div class="pic"><img src="images/produce.png" alt=""><div class="hid"></div></div>

效果图:


CSS高级技巧:

1.精灵图 sprites

目的:为了有效的减少服务器接受合发送请求的次数,提高页面的加载速度

使用精灵图核心:主要针对:背景图片 (把多个小的背景图片整合到一张大图片上)(大图片称为 sprites 精灵图 或者 雪碧图)

移动背景图片的位置-属性background-position: -182px -10px;

简写: background: url() no-repeat -182px 0px;

注意:

移动的距离就是这个目标图片的x和 y坐标

注意网页中的坐标有所不同:x轴右边是正值,左边是负值,y轴下边是正值,上边是负值。因为网页中,一般情况下都是往上往左移动,所以数值是负值

使用精灵图的时候需要精确测量 ,每个小背景图片的大小位置

.bg2 {width: 26px;height: 25px;margin: 50px;background: url(images/bg-sum.png) no-repeat -156px -106px;/* 或者可以分开写background: url(./images/spirit.png);background-position: -156px -106px; */
}

  • 精灵图也是有很多缺点的,比如:

1.图片文件比较大

2.图片本身放大缩小会失真

3.图片制作完毕后,想要更换,会非常麻烦(因此出现字体图标)

2.字体图标 iconfont

展示效果:图标;

本质:字体(具有字体的属性)

字体图标的优点:

1.字体图标的下载

阿里iconfont字库: http://www.iconfont.cn/,推荐指数:★★★★★

2.字体图标的引用:

(1)unicode引用方式

(2)✅font-class引用方式

<!-- 插入图标 链接-->
<link rel="stylesheet" href="http://at.alicdn.com/t/c/font_3982245_uuj9arcfwa.css">
.icon-star {font-size: 100px;color: rgb(254, 219, 63);
}
  <!-- 引入图标 --><span class="iconfont icon-star"></span>

(3)(symbol引用方式

…………移动端等引用方式,见iconfont官网

3.CSS三角形

网页中常见的三角形,使用CSS直接画出来,不必做成图片/字体图标

效果图如上,对应代码如下:

/* CSS直接画三角 */
.sanjiao {/* 不给宽度,高度,给边框(四边颜色不同 */width: 0;height: 0;border-top: 1px solid pink;border-right: 1px solid rgb(21, 213, 174);border-bottom: 1px solid rgb(127, 74, 220);border-left: 1px solid rgb(244, 11, 93);
}
<div class="sanjiao"></div>

效果图如上,对应代码如下:(1.宽高为0;2.border四边复合设置粗细,透明;3.根据需求单独设一条边为有色)(三步)

border的粗细,决定三角的大小

/* CSS直接画三角 */
.sanjiao {width: 0;height: 0;/*为了照顾兼容性:兼容低级浏览器,还需写: */line-height: 0 ;font-size: 0;/* 下三角▼ --- 边框(四边颜色不同,三个透明),出现三角形 *//*border-top: 1px solid pink;border-right: 1px solid transparent;border-bottom: 1px solid transparent;border-left: 1px solid transparent;*//* 效果同上 *//* border的粗细,决定三角的大小 */border: 50px solid transparent;border-top-color: pink;
}

效果图如上,对应代码如下:

.jd {position: relative;width: 100px;height: 100px;background-color: orange;
}
.jd span {position: absolute;top: -20px;right: 15px;width: 0;height: 0;line-height: 0px;font-size: 0px;border: 10px solid transparent;border-bottom-color: pink;
}

4.CSS用户界面样式

1.鼠标样式 cursor

语法:li { cursor: pointer; }

作用:鼠标放到对象上显示的效果

2.轮廓线 outline

多用于:表单input框

语法:取消表单轮廓:input { outline:none;(或outline: 0 ; )}(去掉默认的蓝色边框)

3.防止拖拽文本域 resize

语法:textarea{ resize: none; }(文本域不可调整大小)

注意:文本域内部自动有padding,所以标签<textarea></textarea>挨着,不要空开(效果如下)

写法一:光标左侧/上侧---没有空隙

 写法二:光标左侧/上侧---有空隙

5.vertical-align属性&应用

1.属性:

用于:设置 图片或表单(行内块元素) 和文字的垂直对齐

设置一个元素的垂直对齐方式,只对行内元素/行内块元素有效

与行内块元素display: inline-block;搭配更合适

语法:vertical-align: baseline|top|middle|bottom

2.应用----解决图片底端 默认空白缝隙的问题

原因:行内块元素与文字默认-基线对齐

解决方案:

1.给图片添加:

        vertical-align: bottom|top|middle等(提倡)

2.图片转换为块级元素:

        display: block; (因为块无vertical-align属性)  (不推荐--影响布局:右侧不能放文字)

.img {vertical-align: top/ middle/ bottom}

3.应用---溢出文字省略号显示

3.1.单行-溢出文字省略号显示

  • 必须满足三个条件:

1.强制一行内显示文本:white-space:nowrap;(默认 normal --自动换行)

2.超出的部分隐藏:overflow:hidden;

3.省略号代替超出部分:text-overflow:ellipsis;

.wordsome{white-space: nowrap;overflow: hidden;text-overflow: ellipsis;
}

3.2.多行-溢出文字省略号显示(更推荐后台人员实现此效果,前端兼容性差)

有较大的兼容性问题,适合于webKit浏览器、移动端(大多都是webKit内核)

  • 必须满足的条件:

超出的部分隐藏:overflow:hidden;

省略号代替超出部分:text-overflow:ellipsis;

弹性伸缩盒子模型显示:display:-webkit-box;

限制在一个块元素显示的文本的行数:-webkit-line-clamp:2;

设置或检索伸缩盒子对象的子元素的排列方式:-webkit-box-orient:vertical;

6.常见布局技巧

1.margin负值的运用

在布局盒子的时候,可能会出现两个盒子叠加到一起导致边框变宽的情况,像这样:


那么我们就可以在这个时候设置margin-left: -1px; (浮动紧挨着基础上,盒子向左移动1px)

margin-left: -1px;

这个时候,如果想实现鼠标放上去就有选中整个边框的样子怎么做?如果只改变边框颜色,就会出现这种情况

解决思路的核心---鼠标经过盒子时,提高当前盒子的层级

  • 解决思路1:如果盒子没有定位,使用相对定位(占有原位置,有定位的会压住标准流,在上方显示)
.mar ul li:hover {position: relative;border-color: blue;
}
  • 解决思路2:如果盒子有定位,加z-index;
.mar ul li {position: relative;float: left;margin-left: -1px;border: 1px solid red;
}
.mar ul li:hover {/* 2.如果盒子有定位,加z-index; */z-index: 1;border-color: blue;
}

2.文字环绕浮动元素

巧妙运用--浮动元素不会压住文字的特性(只需给图片添加浮动,不会挡住标准流中的文字)

.box0 img {float: left;
}

3.行内块元素的巧妙运用

行内元素/行内块元素--想“水平居中”:给其父盒子添加text-align:center;即可

效果如上,代码如下:

/* 行内元素/行内块元素--想水平居中:给其父盒子添加text-align:center;即可 */
.box1 {text-align: center;
}.box1 a {display: inline-block;text-decoration: none;width: 36px;height: 36px;line-height: 36px;text-align: center;background-color: #f7f7f7;border: 1px solid #ccc;color: #333;font-size: 14px;
}.box1 .prev,
.box1 .next {width: 100px;
}.box1 .current,
.box1 .elp {background-color: #fff;border: 0px;
}.box1 input {width: 45px;height: 36px;border: 1px solid #ccc;/* 取消蓝色边框效果 */outline: none;
}.box1 button {width: 60px;height: 36px;background-color: #f7f7f7;border: 1px solid #ccc;
}
    <div class="box1"><a href="#" class="prev">&lt;&lt;上一页</a><a href="#" class="current">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a><a href="#">6</a><a href="#" class="elp">…</a><a href="#" class="next">下一页&gt;&gt;</a>到第<input type="text">页<button>确定</button></div>

4.CSS三角强化

<i></i>多用于三角形

效果如上,代码如下:

/* CSS画---直角三角形 */
.zjsj {/* 不给宽度,高度,给边框(四边颜色不同,三个透明),出现三角形 */width: 0;height: 0;/*为了照顾兼容性:兼容低级浏览器,还需写: */line-height: 0;font-size: 0;/* 直角三角形 *//*写法一: */border-top: 200px solid pink;border-right: 100px solid blue;/*写法二:分开写: */border-color: transparent red transparent transparent;border-style: solid;border-width: 200px 100px 0 0;
}

效果如上,代码如下:

.jdprice {width: 201px;height: 25px;border: 1px solid red;line-height: 25px;
}.jdprice .red {position: relative;float: left;margin-right: 10px;width: 100px;height: 100%;background-color: red;text-align: center;color: #fff;
}.jdprice .red i {position: absolute;right: 0px;/*直角三角形 */width: 0;height: 0;border-top: 25px solid transparent;border-right: 13px solid #fff;
}.jdprice .content {font-size: 14px;color: #666;text-decoration: line-through;
}
<div class="jdprice"><span class="red">¥1749.00<i></i></span><span class="content">¥229900</span>
</div>

5.CSS初始化

注:字体:不要用中文,用其对应的unicode编码代替,有效避免浏览器解释css代码时的乱码问题。(如:黑体:\9ED1\4F53 ; 宋体:\5B8B\4F53;)

/* 把我们所有标签的内外边距清零 */
* {margin: 0;padding: 0;
}
/* em 和 i 斜体的文字不倾斜 */
em,
i {font-style: normal;
}
/* 去掉li 的小圆点 */
li {list-style: none;
}img {/* border 0 照顾低版本浏览器 如果 图片外面包含了链接会有边框的问题 */border: 0;/* 取消图片底侧有空白缝隙的问题 */vertical-align: middle;
}button {/* 当我们鼠标经过button 按钮的时候,鼠标变成小手 */cursor: pointer;
}a {color: #666;text-decoration: none;
}a:hover {color: #c81623;
}button,
input {/* "\5B8B\4F53" 就是宋体的意思 这样浏览器兼容性比较好 */font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
}body {/* CSS3 抗锯齿形 让文字显示的更加清晰 */-webkit-font-smoothing: antialiased;background-color: #fff;font: 12px/1.5 Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;color: #666;
}.hide,
.none {
/*   元素隐藏 */display: none;
}
/* 清除浮动 */
.clearfix:after {visibility: hidden;clear: both;display: block;content: ".";height: 0;
}
.clearfix {*zoom: 1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/31256.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot+mysql学生个性的宿舍分配管理系统-计算机毕业设计源码01236

摘 要 随着互联网大趋势的到来&#xff0c;社会的方方面面&#xff0c;各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去&#xff0c;而其中最好的方式就是建立网络管理系统&#xff0c;并对其进行信息管理。由于现在网络的发达&#xff0c;学生个性的宿舍…

Vue学习(MVVM、入门练习)-学习笔记

文章目录 Vue学习&#xff08;MVVM、入门练习&#xff09;-学习笔记入门实例 Vue学习&#xff08;MVVM、入门练习&#xff09;-学习笔记 入门实例 <!DOCTYPE html> <html> <head><title></title><link rel"stylesheet" type"…

打开一个窗体的代码css,css+js实现点击文字或按钮弹出一个div窗口-编码类-艾雪雪aixuee.com-恭喜你终于发现了这个宝藏!...

css部分&#xff1a; .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity88); } .white_mrc { display: none; width: 250px; height: 400px; padding…

html 点击文字转换窗口,css+js实现点击文字或按钮弹出一个div窗口-编码类-艾雪雪-恭喜你终于发现了这个宝藏...

css部分&#xff1a; .black_overlay{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; z-index:1001; -moz-opacity: 0.8; opacity:.80; filter: alpha(opacity88); } .white_mrc { display: none; width: 250px; height: 400px; padding…

雪雪不吃香菜

确定项目 立项——产品说明书——需求文档——需求评审 详细概要设计——编码——自测——提测 测试计划——编写测试用例——测试用例评审——提测 开发环境(开发专用) 测试环境(测试专用) 提测——冒泡测试(测试流程是否通过)——功能测试——禅道记录BUG——回归测试(验…

chatgpt赋能python:Python聊天工具:简单易用的即时通讯方式

Python聊天工具&#xff1a;简单易用的即时通讯方式 在当今数字化社会&#xff0c;通讯技术持续发展&#xff0c;人们借助各种出色的工具保持着联系。聊天软件应运而生&#xff0c;已成为人们常用的即时通讯工具。而Python聊天工具则以简单易用的方式&#xff0c;为用户提供了…

Edge安装插件错误(download interrupted)解决办法

微软Edge无法安装插件的原因大概率是host的问题 修改即可!!! win10系统host路径: C:\Windows\System32\drivers\etc 把host文件复制到桌面上 用记事本打开(便于编辑) 把以下复制到文本当中 13.107.9.158 mesedgeextensions.sf.tlu.dl.delivery.mp.microsoft.com #Edge商店拓展…

没有域名怎么用宝塔面板搭建网站?

其实没有域名也是可以用ip地址&#xff0c;搭建网站的&#xff0c;在宝塔面板部署网站的时候&#xff0c;填上ip地址就行。 如果想要搭建多个网站&#xff0c;可以在后面加上端口号

宝塔环境搭建教程

阿里云ECS服务器搭建宝塔环境教程-保姆级教程 1.建立远程连接 2.输入密码后登入服务器 3.从宝塔官网复制下载安装代码 4.粘贴到图二服务器命令行&#xff0c;按回车 5.耐心等到下图出现&#xff0c;点击y 6.耐心等待宝塔环境的网址、账号、密码出现&#xff0c;可以将其保存…

frp内网穿透搭建-宝塔版

一、搭建frp准备 下载frp部署文件&#xff1a;https://github.com/fatedier/frp/releases把防火墙安全端口打开&#xff0c;默认7500&#xff0c;7000&#xff0c;其他的自行设置打开&#xff0c;如阿里云服务器要打开端口规则。 二、配置frps服务端 把frps、frps.ini、LICE…

使用宝塔搭建一个简单的网页

1.首先在百度上搜索“宝塔”进入其中&#xff0c;找到相应的脚本。 2.将相应的脚本进行复制&#xff0c;粘贴在CentOS上运行 3.运行过程中的选择都为yes&#xff0c;随后等候其安装成功就行了。 4.根据安装成功后的页面提示的有内网地址和账户密码。复制内网地址进入&#xff…

树莓派宝塔搭建NAS私有云盘nextcloud

树莓派宝塔搭建NAS私有云盘nextcloud 其余树莓派搭建文章前言准备工作BUGBUG1BUG2 成功界面开启外部存储 其余树莓派搭建文章 树莓派宝塔搭建NAS私有云盘nextcloud 树莓派宝塔搭建图床Chevereto 树莓派宝塔部署hexo博客 前言 我本来是在树莓派3B上搭建了hexo博客和图床&…

服务器+宝塔+Chevereto 搭建个人图床

服务器+宝塔+Chevereto 搭建个人图床 先附上我的demo: http://img.xubean.top/ 步骤: 前去github下载压缩包。在宝塔面板新建网站,并且创建一个数据库。将下载的压缩包解压至你新建的网站的目录。注意这里需要更改一个东西。打开新建的网站,跟着提示一步步配置。1. 下载压…

宝塔nginx文件服务器,借助宝塔使用nginx搭建webdav服务端

前言 之前webdav一直使用的是 坚果云 &#xff0c;但是它对请求次数存在限制&#xff0c;某些时候同步会出现问题。所以我决定自己在vps上搭建webdav服务。 vps环境 系统&#xff1a;CentOS 7.3 宝塔&#xff1a;7.1.1 宝塔安装 自行参考&#xff1a;宝塔官网 1.重新安装nginx …

宝塔搭建网站

宝塔搭建网站 1.首先登陆宝塔页面 2.点开侧边栏 网站 选项 点开网站&#xff0c;然后点击添加站点&#xff0c;域名按照自己喜好来填写即可&#xff0c;可以选择创建数据库&#xff0c;其他选项默认就行。 3.点开侧边栏 文件 选项 打开文件选项&#xff0c;接着点击上传&a…

利用Docker和宝塔搭建FRP内网穿透

小老百姓成本能省则省&#xff0c;能多利用则多利用设备价值&#xff0c;一台放wordpress和测试站点服务器虽然配置不高&#xff0c;但为了发挥更多价值&#xff0c;可以用于日常开发&#xff0c;避免多花费租用其它内网穿透产品。 本教程是在不改变宝塔部署的产品之间&#x…

宝塔搭建多个站点

1.创建网站 域名是随便填写的 根目录保存你要创建的网站的文件夹 然后将网站的源码安装在这根目录即可 2.域名更改 添加网站对应的端口号 (选择的端口尽量不要是连续的&#xff0c;我之前尝试开放端口100&#xff0c;101&#xff0c;102&#xff0c;只有100端口可以用&#…

CentOS宝塔搭建(超详细)

本文讲述CentOS搭建宝塔全过程&#xff0c;我会手把手的教你哦~ 1、云平台控制台创建及安装CentOS系统。 不管哪个云应该都有这个系统的。 注意事项&#xff1a; &#xff08;1&#xff09;CentOS系统建议7.4、7.6版本&#xff0c;切勿安装8版本&#xff01; &#xff08;…

宝塔linux面板源码,用宝塔搭建自己的源码程序

对于如何使用宝塔面板搭建自己的源码程序问题&#xff0c;其实这个是一个很简单的问题&#xff0c;不管是 Linux 面板还是 Windows 面板&#xff0c;只需要成功安装面板后添加好站点之后直接将自己的源码程序上传到根目录即可。下面宝塔面板教程栏目就以宝塔 Linux 面板为例进行…

使用宝塔搭建个人博客

1、首先要有一个云服务器 我用的是腾讯云的vps&#xff0c;系统是winserver2012&#xff0c;选了一个自带宝塔面板的&#xff0c;就不用配那些php、mysql、apache之类的了 2、安装宝塔 自带面板 在浏览器中打开宝塔的控制面板&#xff0c;默认端口是8888 用户名和密码要去vp…