黑马程序员pink老师_CSS学习笔记

关于CSS具体属性:CSS参考手册网址

目录

目录

一、CSS字体样式属性

font-size:字号

font-family:字体样式 

 CSS Unicode字体

font-weight:字体粗细

font-style:字体风格

 二、选择器【重点】

标签选择器(元素选择器)

类选择器

CSS命名规范

多类名选择器

 id选择器

通配符选择器【一般用不到,仅作了解】

伪类选择器

(1)链接伪类选择器

(2)结构伪类选择器

(3)目标伪类选择器

三、CSS外观属性

颜色属性

line-height:行间距

text-align: 水平对齐方式

text-indent:首行缩进

letter-spacing:字间距

word-spacing:单词间距

颜色半透明(CSS3新增)

文字阴影(CSS3)

 Hbuilder快捷方式

四、引入CSS样式表

内部样式表

行内样式(内联样式)

外部样式表

​ 三种样式对比

块级元素(block-level)

行内元素(inline-level)

行内块元素(inline-block)

标签模式转换display

五、CSS复合选择器 

交集选择器

并集选择器

后代选择器

子元素选择器

 属性选择器

伪元素选择器(CSS3)

六、CSS书写规范

空格规范

选择器规范

属性规范 

七、CSS背景(background)

背景图片(image)

背景平铺(repeat)

背景位置(position)

背景附着

背景简写

背景透明(CSS3)

背景缩放(CSS3)

多背景(CSS3)

凹凸文字

八、CSS三大特性

CSS层叠性

CSS继承性

CSS优先级 

九、CSS盒子模型(重点)

盒子边框(border)

表格的细线边框

圆角边框(CSS3)

内边距(padding)

外边距(margin)

外边距实现盒子居中

清除元素默认外边距

外边距合并 

相邻块元素垂直外边距合并

嵌套元素垂直外边距合并

content宽度和高度

盒子模型布局稳定性

CSS3盒模型(CSS3新增属性)

十、浮动(float)

普通流

浮动

浮动特性(重难点) 

清除浮动

额外标签法 

其他方法 



一、CSS字体样式属性

font-size:字号

相对长度单位 说明
em 相当于当前对象内文本的字体尺寸
px 像素【最常用,推荐使用】
绝对长度单位 说明
in 英寸
cm 厘米
mm 毫米
pt

font-family:字体样式 

p {
  font-family: "宋体";/*可以写多个字体,用英文逗号隔开,表示找不到1字体去找2字体,等等*/
  font-size: 14px;/*ctrl+/是注释快捷键*/
  color: pink;
}

 CSS Unicode字体

在CSS中设置字体名称可以直接写中文,但是在文字编码(GB2312   UTF-8等)不匹配时会产生乱码的错误,xp系统不支持类似微软雅黑的中文。

解决方案一:使用英文代替。font-family:“Microsoft Yahei”;

解决方案二:在CSS中直接使用Unicode编码字体

【建议:Unicode字体只用“宋体”和“微软雅黑”】

font-weight:字体粗细

除了HTML中的的<b>和<strong>标签外,还可以使用CSS完成字体加粗效果,但是CSS是没有语义的。

font-wieght属性定义字体的粗细,属性值有normal,bold,bolder,lighter,数字100~900

【一般更喜欢用数字表示,数字400=normal,数字700=bold】

strong{
        font-weight: normal;/* 让标签包裹的粗体不加粗 */
}

font-style:字体风格

除了HTML中的的<i>和<em>标签外,还可以使用CSS完成字体倾斜效果,但是CSS是没有语义的。

normal:指定文本字体样式为正常的字体

italic:指定文本字体样式为斜体。对于没有设计斜体的特殊字体,如果要使用斜体外观将应用oblique

oblique:指定文本字体样式为倾斜的字体。人为的使文字倾斜,而不是去选取字体中的斜体字【不常用】

em {
  font-style:normal;/*让标签包裹的斜体变得不倾斜, */
}

font:综合式样式【重点】

h1 {
    font: italic bold 14px "microsoft yahei";/*前两项可以省略,后两项必须保留,顺序不能改变*/
}

使用Chrome调试

 二、选择器【重点】

想要CSS样式应用于特定的HTML元素,首先要拿到这项元素,在CSS中,执行这一任务的样式规则的部分被称为选择器

标签选择器(元素选择器)

标签选择器是指以HTML标签为选择器,按标签分类,为页面中同类型的标签快速统一样式,缺点是不能设计差异化样式

标签{
    属性1:属性值1;
    属性2:属性值2;
}
元素{
    属性1:属性值1;
    属性2:属性值2;
}

类选择器

 以元素为对象定义单独或相同样式

<head>
    <style>
    h1 {
        color:palevioletred;
    }
    .yinshi {      /* 加 “.”声明类样式 */
                color: blue;
    }
    .shenle {
                color: orangered;
    }
    .xinba {
            color: gray;
    }
    </style>
</head>
<body>
    <div class="yinshi">银时</div><!-- 此处引用类样式 -->
    <div class="shenle">神乐</div>
    <div class="xinba">新八</div>    

CSS命名规范

类选择器命名规范

 web前端开发规范手册pdf下载

多类名选择器

给标签添加多个类名,实现多种目的选择

<head>

    <style>

    .c-blue {      /* 加 “.”声明类样式 */
            color: blue;
    }
    .c-orange {
            color: orangered;
    }
    .c-gray {
            color: gray;
    }
    .font20 {
            font-size: 20px;
    }
    </style>
</head>
<body>
    <div class="c-blue font20">银时</div><!-- 此处引用类样式 -->
    <div class="c-orange">神乐</div>
    <div class="c-gray font20">新八</div><!-- 多类名之间用空格隔开 ,此时可以既变颜色又加粗-->
</body>

 id选择器

和类选择器结合记忆

#black {
        color: black;
}
<div id="black">土方十四郎</div>
<!--区别于类选择器的“.”开始,id选择器以“#”开头命名,在下方标签处引用-->

类选择器和id选择器的区别

类选择器可以重复多次使用,被多个标签引用,相当于人名

id选择器是唯一的,相当于身份证号,只允许使用一次

通配符选择器【一般用不到,仅作了解】

通配符选择器用“*”表示,是所有选择器中适用范围最广的,能匹配页面中所有元素,基本语法格式如下

* {
    属性1:属性值1;
    属性2:属性值2;
}

<head>
   <style>
       * {   /*星号代表所有选择器*/
         color: #0000FF;
         font-size: 20px;
      }    
   </style>
</head>
<body>
    <p>银魂</p>
    <div>银魂</div>
    <strong>银魂</strong>
    <i>银魂</i>
    <span>银魂</span><!--这是最近正在重刷银魂的博主-->
</body>

伪类选择器

倾向于给某些选择器添加效果,如给链接添加效果

(1)链接伪类选择器

 改变顺序可能造成效果全部无法实现的后果。

<head>
        <style>
            a:link {
                /* 未访问的链接 */
                color: cornflowerblue;
                font-size: 20px;
                font-weight: 700;
            }
            a:visited {
                /* 访问过一次的链接 */
                color: darkorchid;
                font-size: 20px;
                font-weight: 700;
            }
            a:hover {
                /* 鼠标移动到连接上时链接的变化 */
                color: tomato;
                font-size: 20px;
                font-weight: 700;
            }
            a:active {
                /* 选定的链接,我们按住鼠标别松开时的状态 */
                color: green;
                font-size: 20px;
                font-weight: 700;
            }
        </style>
    </head>
    <body>
        <div>
            <a href="#">零元购</a>
        </div>
    </body>

 以下是链接伪类选择器的简写方式【最常用写法】

<head>
        <style>
            a {
                /* a是标签选择器,指所有的链接 */
                color: cornflowerblue;
                font-size: 20px;
                font-weight: 700;
            }
            a:hover {
                /* :hover是链接伪类选择器 */
                color: tomato;    /* 鼠标经过,由蓝色变红色 */
            }

        </style>
    </head>
    <body>
        <div>
            <a href="#">零元购</a>
        </div>
    </body>

(2)结构伪类选择器

<head>
        <style>
            li:first-child {   /* 第一个孩子 */
                color: orangered;
            }
            li:last-child {    /* 最后一个孩子 */
                color: green;
            }
            li:nth-child(3) {  /* 第三个孩子,括号写几就是第几个孩子 */
                color: mediumpurple;
            }
        </style>
    </head>
    <body>
        <ul type="square">
            <li>长虹剑</li>
            <li>冰魄剑</li>
            <li>紫云剑</li>
            <li>奔雷剑</li>
            <li>青光剑</li>
            <li>雨花剑</li>
            <li>旋风剑</li>
        </ul>
    </body>

其他用法

li:nth-child(even) {/* 可以选择所有偶数(even)孩子标签 */
                color: orange;
            }
li:nth-child(odd) {/* 可以选择所有奇数(odd)孩子标签 */
                color: skyblue;
            }
li:nth-child(n) {
                color: aqua;/* 选择全部孩子 ,里边还可以写2n,3n等等*/
            }

(3)目标伪类选择器

target目标伪类选择器:选择器可用于选取当前活动的目标元素

:target {
        color: red;
}

三、CSS外观属性

颜色属性

line-height:行间距

用于设置行间距,也称行高。一般比字号大7,8个像素,即px。

p {
    line-height: 40px;
}

text-align: 水平对齐方式

center:居中

left:左对齐

righ:右对齐

text-indent:首行缩进

所有段落都会缩进,建议使用em,作为单位,1em=一个字的宽度

p {
    text-indent: 2em;/* 此时2em就是两个字的宽度 */
  }

letter-spacing:字间距

字符之间的空白,允许使用负数,默认为normal

div {
    letter-spacing: 2px;
}

word-spacing:单词间距

对中文无效

颜色半透明(CSS3新增)

color:rgba(r,g,b,a),a指alpha,即透明度,取值在[0,1]之间,参数不能省略

div {
    color: rgb(0,200,173,0.5);
}/*测试下来rgb和rgba效果一样,不知道是不是兼容度提高了,为了规范依然使用rgba*/

文字阴影(CSS3)

text-shadow:水平位置,垂直位置,模糊距离,阴影颜色;【共计四个参数】前两个参数必写,最后两个可以省略

h1{
    text-shadow: 1px 2px 4px rgba(183,23,48,0.5);
    /* 参数之间用“空格”隔开,而不是逗号
    前两个参数必须有,后两个可以省略 */
}

 Hbuilder快捷方式

div*10快速生成10个标签
ul>li快速生成父子类标签
div+p快速生成兄弟标签,同一级的标签
.red+tab键快速生成带类名的div
#red+tab快速生成带id名的div
例:.nav+.header+.main>.left+.right

四、引入CSS样式表

内部样式表

内部样式是集中将代码卸载HTML文档的head头部,用style标签定义。也可也将style标签放在文档任何地方。

type=“text/CSS”在HTML5中可以省略,但写上也比较规范。

行内样式(内联样式)

内联样式,又称行内样式,内嵌样式,通过标签的style属性来设置元素的样式。只适合样式比较少的情况

<标签名 style=“属性1:属性值1;属性2:属性值2”>    内容   </标签名>

外部样式表

外部样式奥是将所有样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签连接到HTML文档中。【link是单标签】

完全实现了结构与样式分离。

<head>
	<link rel="stylesheet" href="style.css"/>
</head>

 三种样式对比

块级元素(block-level)

每个元素通常会独自占据一整行或者多行,可以对其设置高度,宽度,对齐属性

常见块级元素:<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等

⭐关于块级元素的特点,要能口述 

行内元素(inline-level)

 不占独立区域,仅靠自身大小和图像尺寸来支撑结构。一般不可设置宽度、高度、对齐属性。

常见行内元素:<a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>

⭐关于行内元素的特点,要能口述  

注意:

        1.只有文字才成段落,因此p标签里不能放块级元素,同理<h1>~<h6><dt>内都不能放其他块级元素。

        2.链接<a>里边不能再放链接。

行内块元素(inline-block)

标签模式转换display

五、CSS复合选择器 

交集选择器

交集选择器由两个选择器构成,其中第一个为标签选择器。第二个为class选择器,两个选择器之间不能有空格。

交集选择器表示既...又...,使用相对较少

例如:p.one 表示的是类名为one的段落标签

并集选择器

如果某些选择器定义的样式完全相同,或者部分相同,就用并集选择器为它们定义相同的CSS样式 。

只要逗号隔开,所有选择器都会执行后面的样式。

<head>
<style>
    p,
    h1,
    .toshi {
				color: aliceblue;
			}
</style>		
</head>
	
<body>
		<p>春江花月夜</p>
		<h1>春江潮水</h1>
		<div class="toshi">海上明月</div>
</body>

后代选择器

又称包含选择器,用来选择元素或者元素组的后代。

写法是把外层标签写在前面,内层标签写在后边,中间用空格分隔

    <head>
		<style>
		.songyang div {
			color: darkcyan;
			font-size: 16px;
		}/*只有.songyang下的div才由效果,外边的div不变*/
		</style>
	</head>
	<body>
		<div class="songyang">
			<div>坂田</div>
			<div>桂</div>
			<div>高杉</div>
		</div>
		<div>近藤</div>
	</body>

子元素选择器

只能选择某元素的子元素,再下一级孙子,重孙子不能选。写法是:父级标签 > 子级标签,符号左右一般各留一个空格

<head>
		<style>
		.nav>li{
			color: pink;
		} /*不知道为什么单独写这个不成功*/

		.nav > li > .two > li{
			color: black;
		}/*必须加上这个才能区分一二级菜单*/
		</style>
	</head>
	<body>
		<ul class="nav">
			<li>一级菜单
				<ul class="two">
					<li>二级菜单</li>
					<li>二级菜单</li>
					<li>二级菜单</li>
				</ul>
			</li>
			<li>一级菜单
				<ul class="two">
					<li>二级菜单</li>
					<li>二级菜单</li>
					<li>二级菜单</li>
				</ul>
			</li>
		</ul>
	</body>

 属性选择器

<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		a[title] {/* 属性选择器用中括号来表示,选出有title的 */
			color: #008000;
		}
		input[type=text]{
			color: red;/* 只有type是text的才显示红色 */
		}
		</style>
	</head>
	<body>
		<a href="#" title="浏览器">Chrome</a>
		<a href="#" title="浏览器">edge</a>
		<a href="#">firefox</a>
		<a href="#">Safari</a>
		<a href="#">QQ</a>
		<input type="text"value="这是一个文本框">
		<input type="submit">
		<input type="reset">
	</body>
<head>
		<meta charset="utf-8">
		<title></title>
		<style>
		div[class^=font]{ /* class^=font表示以font开始 */
			color: deeppink;
		}
		div[class$=nav]{ /* class$=nav表示以nav结束 */
			color: aquamarine;
		}
		div[class*=TB]{ /* class*=TB表示TB在任意位置都行 */
			color: orange;
		}
		</style>
	</head>
	<body>
		<div class="font12">属性选择器</div>
		<div class="font12">属性选择器</div>
		<div class="font24">属性选择器</div>
		<div class="font24">属性选择器</div>
		<div class="pdd-nav">属性选择器</div>
		<div class="jd-nav">属性选择器</div>
		<div class="news-TB-heater">属性选择器</div>
		<div class="news-TB-footer">属性选择器</div>
	</body>

伪元素选择器(CSS3)

::first-letter,选择文本第一行的单词或字(如中文日文韩文)

::first-line,选择文本第一行,不固定,根据浏览器窗口大小而变动

::selection,可以改变选中文本样式,比如蓝底白字变颜色变成粉色之类的

​
<style>
		p{
			line-height: 35px;
		}
		::first-letter{
			color: aquamarine;/*英文是一个单词,中文是一个字,日文是一个假名*/
		}
		</style>
	</head>
	<body>
		<p>
			なまりの空(そら)【阴霾的天空】
			重(おも)く垂(た)れ込(こ)み【垂下凝重的幕帘】
			真白(ましろ)に淀(よど)んだ【沉入苍白之中】
			太阳(たいよう)が砕(くだ)けて【将太阳斩碎】
			耳鸣(みみな)りを尖(とが)らせる【让我大声尖叫】
		</p>
	</body>

​

.dome:类选择器

first-child:伪类选择器

first-letter:伪元素选择器

::before 和 ::after 

<head>
		<style>
		div::before{
			content: "门前";/* 必须和content一起使用,记得加引号“” */
			color: #FF0000;
		}
		div::after{
			content: "游过一群鸭";
			color: skyblue;
		}
		</style>
	</head>
	<body>

			<div>大桥下</div>
		
	</body>

六、CSS书写规范

空格规范

选择器与“ { ”之间必须有空格 。

属性名与之后的 :之间不允许有空格,:与属性值之间必须有空格。

举例:

.nav a {
                color: red;
            }

选择器规范

当一个rule里边包含多个选择器时,每个选择器声明比需独占一行。 

举例:

    p,
    h1,
    .toshi {
                color: aliceblue;
            } 

属性规范 

属性定义必须另起一行。

举例:

div::after{
            content: "游过一群鸭";
            color: skyblue;
        } 

七、CSS背景(background)

背景图片(image)

 必须引用在同一个项目下的图片,可以不在同一个文件夹中,引用不同项目下的图片会失败

背景图片更改大小只能用background-size

​
div {
			height: 800px;
			width: 600px;
			background-color: pink;
			background-image: url("图片/1.png");
		}​
		/*问题:1、地址路径按理说不用加引号,加了反倒会引起浏览器兼容性问题,但是必须要加引号才能在我的浏览器上显示出来*/

​

背景平铺(repeat)

默认平铺,取消平铺要no-reprat。

背景位置(position)

语法:

background-position:length || length

background-position:position || position 

参数:

length:百分数、浮点数和单位标识组成的长度值。参阅长度单位

position:top、center、bottom、left、center、right

设置检索对象的背景图像位置必须先指定background-image属性。默认为(0% 0%)。如果只指定了一个值,该值应用于横坐标,纵坐标默认50%,如果有两个值,第二个值应用于纵坐标。

 利用方位名词更改图片位置,位置默认左上角

方位名词没有顺序,谁在前都行,如果只有一个方位词另一个默认是center

div {
			height: 800px;
			width: 700px;
			background-color: pink;
			background-image: url("女儿.png");
			background-repeat: no-repeat;
			background-position: right top;
			
		}​

 利用精确单位更改图片位置

第一个值一定是x坐标,第二个值一定是y坐标。

div {
			height: 800px;
			width: 700px;
			background-color: pink;
			background-image: url("女儿.png");
			background-repeat: no-repeat;
			background-position: 15px 30px;
		}​

 混合使用

div {
			height: 800px;
			width: 700px;
			background-color: pink;
			background-image: url("女儿.png");
			background-repeat: no-repeat;
			background-position: center 30px;
		}​

背景附着

默认是scroll

语法:

background-attachment:scroll | fixed 

参数:

scroll:背景图像是随对象内容滚动的

fixed:背景图像固定

背景简写

和字体简写类似,但是顺序没有强制标准,一般建议如下

background:背景颜色 、背景图片地址,背景平铺,北京滚动,背景位置

background: pink url("女儿.png") no-repeat fixed center 30px;

背景透明(CSS3)

语法:

background:rgba(0,0,0,0.3);

背景半透明是指盒子背景半透明,对于盒子里边的内容不受影响。

给文字和边框(border) 设置半透明都可以用rgba。

背景缩放(CSS3)

语法:

background-size:***px | ***% | contain | cover

一般使用px时,只更改一个值,防止缩放实真。使用%时,表示图片整体缩小为原图的百分之多少。

 

 cover:自动调整缩放比例,保证图片始终填充满背景区域,如果有溢出会被隐藏,图片等比缩放并保证宽高同时满足盒子大小。

contain:自动调整缩放比例,但保证图片始终完整显示在背景区域。只要宽度和高度有一样曼珠盒子大小,就不再缩放。保证了图片的完整性,不会有缺失,但是盒子会有一部分裸露,没有背景图片覆盖。

多背景(CSS3)

  •  一个元素可以设置多重背景图像
  • 每组属性之间使用逗号分隔
  • 如果设置的背景图片之间存在重叠关系,前面的背景图片会覆盖在后面的背景图片之上
  • 为了避免背景色将图片给盖住,背景色通常定义在最后一组

 

div {
			height: 800px;
			width: 700px;
			background: url("女儿.png") no-repeat 10px 20px/300px,
						url(001.jpg) no-repeat right 20px/300px,/*位置/大小*/
						url(troye.jpg) no-repeat 10px bottom/300px pink;
		}​

凹凸文字

<head>
		<style>
		body {
			background-color: #ccc;
		}
		div {
			color: #CCCCCC;
			font: 700 80px "微软雅黑";
		}
		div:first-child {
			/* text-shadow:水平位置 垂直位置 模糊距离 阴影颜色 */
			text-shadow: 1px 1px 1px #000, -1px -1px 1px #fff;
		}
		div:last-child {
			text-shadow: -1px -1px 1px #000, 1px 1px 1px #fff;
		}
		</style>
	</head>
	<body>
		<div >
			<div>我是凸起的文字</div>
			<div class="second">我是凹下的文字</div>
		</div>	
	</body>

此处产生了 :last-child 未成功调用问题

解决方法:两个div必须在父类div下才能成使用 :last-child ,否则只能使用 :first-child 。

                  使用时必须选择父类下的最后一个元素。

另外:可以成功使用nth-child(n),不必在父类标签下

 text-decoration:通常用于给链接修改装饰效果。

 使用技巧:在一行内,设定行高等于盒子高度,可以使文字垂直居中。

八、CSS三大特性

CSS层叠性

所谓层叠性是指多种CSS样式的叠加。

是浏览器处理冲突的一种能力,如果一个属性通过两个相同的选择器设置到了同一个元素上,那么此时一个属性就会将另一个属性层叠掉,此为样式冲突。如果出现样式冲突,以最后的样式为准。

1、样式冲突,遵循就近原则。哪个样式离着结构近,就执行哪个样式。

2、样式不冲突,不会层叠。

CSS继承性

所谓继承性就是指,书写CSS样式表时,子标签会继承父标签的某些样式,比如文本颜色和字号。

恰当地使用继承可以简化代码,降低CSS样式的复杂性,子元素可以继承的父元素样式:以text-,font-,line-这些元素开头的,以及color属性。

CSS优先级 

在定义CSS样式时,经常出现两个或更多规则应用在一个元素上,这时会出现优先级的问题。

关于CSS权重,用一套公式来计算,是衡量CSS优先级的一个标准,具体规范如下:

四个级别从左到右,一级大于一级,数位之间没有进制,级别之间不可超越。

继承样式权重为0,不管父类元素权重多大,它被子类继承时权重都为0,子元素定义的元素会覆盖继承样式。

 

九、CSS盒子模型(重点)

所谓盒子模型,就是把html页面中的元素看作是一个矩形的盒子,每个矩形都有元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。

所有文档元素(标签)都会生成一个矩形框,我们称之为元素框(element box),它描述了一个文档元素在网页布局汇总所占的位置大小。因此,每个盒子除了有自己的大小和为之外,还影响着其他盒子的大小和位置。

盒子边框(border)

语法:

border:border-width || border-style || border-color

边框属性一:设置边框样式(border-style)

边框样式用于定义页面中的边框风格,常用如下:

none:没有边框,忽略所有边框的宽度(默认值) 

solid:边框为单实线(最常用)

dashed:边框为虚线

dotted:边框为点线

double:边框为双实线(用得少)

border-style,border-width,border-color,设置四边属性时是按照上右下左的顺时针顺序。

div {
	    border-color: red blue springgreen black;
		border-style: dashed double solid dotted;
		border-width: 1px 5px 10px 30px;
		}

一起写的时候中间用空格隔开。

div:nth-child(4) {
			border-top: 3px solid orangered;/*上边框,宽度 样式 颜色*/
			border-bottom: blueviolet 3px solid;/*下边框 颜色 宽度 样式*/
			/*样式顺序不影响表现*/
		}

 border属性不继承,可以继承的属性回看关于继承的部分。

cellspacing和cellpadding的区别:

前者为两个单元格之间的距离,后者为单元格内文字与边框的距离。

cellspacing表示表格各单元格之间的空隙,参数值是数字

cellpadding表示表格内文字和表格边框的距离

两个属性都应用在<table>标签内部

表格的细线边框

 table {

           border-collapse: collapse;

}

 border-collapse: collapse表示边框合并到一起。

圆角边框(CSS3)

语法:

border-radius:左上角  右上角  右下角  左下角;

顺时针顺序

        <style>
		div {
			height: 400px;
			width: 400px;
			border: 1px solid red;
		}
		div:first-child {
			border-radius: 10px;
			/* 一个数值表示四个角都是相同的10px */
		}
		div:nth-child(2) {
			border-radius: 50%;
			/*取宽度和高度的50%,会变成一个圆形*/
		}
		div:nth-child(3) {
			border-radius: 10px 40px;
			/* 取对角线,左上角和右下角是10px,右上角和左下角是40px */
		}
		div:nth-child(4) {
			border-radius: 10px 40px 80px;
			/* 左上角10      右上角和左下角40      右下角80 */
		}
		
		</style>

内边距(padding)

padding属性用于设置内边距,是指内容与边框之间的距离。

padding后跟的数值个数不同表达意思也不同,padding两个值代表的方向要和radius分开

数值个数 表达意思(边距都指内边距)
1个值 上下左右边距
2个值 前一个代表上下边距,后一个代表左右边距
3个值 上边距,左右边距,下边距
4个值 上边距,右边距,下边距,左边距

外边距(margin)

margin属性用于设置外边距。设置外边距会在元素之间创建“空白”,这段空白通常不能用来放置其他内容。

margin:上外边距  右外边距  下外边距  左外边距 

取值顺序和内边距(padding)一样。

外边距实现盒子居中

让一个盒子实现水平居中需要满足两个条件 :

1、必须是块级元素

2、盒子必须指定了宽度(width)

然后就给左右的外边距都设置为auto,就可使块级元素水平居中。

header {
				width: 900px;
				height: 120px;
				background-color: black;
				margin: 0 auto;/* 上下不管,左右是auto就能居中 */
			}

实际案例中,制作导航栏高度应选择奇数高度,行高用偶数就会出现边框像素留白的问题,使用a:hover时行内块不能全部变色,上下边缘会有1px的空白区域

注意:

“margin:0 auto;” 对于inline-block不起作用。
即使可以首先使用数值指定“inline-block”,使用“margin:0 auto;”居中也不起作用。
“text-align:center;”不会使父元素成为选择器
“text-align:center;”的基本规则是“selector是父元素”。
如果要将其居中,则必须创建父元素。 


在行内块元素中使用margin:0 auto时,应同时对其父元素使用text-aline:center才能实现居中 

插入图片<img>也可也看作一个盒子,可以用margin和padding更改位置,但是背景图片更改位置只能用background-position。

一般情况下背景图片适合做一些小图标使用,产品展示类用的就是插入图片

清除元素默认外边距

* {

      padding: 0;         /*清除内边距*/

      margin: 0;          /*清除外边距*/

}

行内元素只有左右外边距,没有上下外边距。我们尽量不要给行内元素指定上下外边距

外边距合并 

使用margin定义块级元素的垂直外边距时没可能会出现外边距的合并(也称外边距的塌陷)。 

相邻块元素垂直外边距合并

 

解决方法:

只设定一个margin值 

嵌套元素垂直外边距合并

 解决方案:

①为父元素定义1像素上边框(可以用透明边框,transparent)

②为父元素定义1像素上内边距(padding)

③为父元素添加overflow:hidden

content宽度和高度

 使用宽度属性width和高度属性height可以对盒子大小进行控制。

width和height属性值可以为不同单位的数值或相对于父元素的百分比,但最常用的还是像素px

/*外和尺寸计算(元素空间尺寸)*/

元素空间高度=  height  +  padding  +  border  +  margin

元素空间宽度=  width  +  padding  +  border  +  margin

/*内盒尺寸计算(元素大小)*/

元素内容高度=  height  +  padding  +  border

元素内容宽度=  width  +  padding  +  border

注意:

1、宽度属性width和高度属性height仅适用于块级元素,对于行内元素无效(img和input标签除外)

2、计算盒子模型总高度时,应该考虑上下两个盒子垂直外边距合并的情况。

盒子模型布局稳定性

根据稳定性区分使用优先级

width   >   padding   >   margin

 原因:

1、margin会有外边距合并问题,所以最后使用

2、padding会影响盒子大小,需要进行加减计算后使用,比较麻烦

3、width没有问题,经常使用宽度 / 高度剩余法来做。

CSS3盒模型(CSS3新增属性)

CSS3中可以用box-sizing 来指定和模型,可指定为content-box,border-box,这样计算盒子大小的方式会分为两种情况

1、content-box:传统盒子模型,盒子大小为:width + padding + border。content-box为默认值,维持W3C的标准Box Mode

2、border-box:CSS3新增盒子模型,盒子大小为:width,就是说padding和border是包含在width里边的,不会撑大盒子。

十、浮动(float)

普通流

 简单理解就是传统div盒子,行内元素啊,块级元素啊,行内块元素的,就是普通流,也叫标准流

浮动

元素浮动是指设置了浮动属性的元素会脱离标准流控制,也就是飘起来

语法

选择器 { float:属性值;}

属性值 描述
left 元素向左浮动
right 元素向右浮动
none 元素不浮动(默认)

浮动元素首先找离自己最近的父元素对齐(左上角,或右上角对齐,取决于left和right),但是不会超过padding和border,只靠近内测对齐 

浮动特性(重难点) 

1、浮动脱标(脱离标准流),不占位置,会影响标准流。浮动只会左右浮动

2、浮动的盒子不再保留原先的位置

3、 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列。

 注意: 浮动的元素是互相贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子, 多出的盒子会另起一行对齐。

4、浮动元素会具有行内块元素特性 

  • 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定
  • 浮动的盒子中间是没有缝隙的,是紧挨着一起的
  • 行内元素同理

浮动常常和父级标准流一起使用,即标准流父盒子内是浮动的子盒子 

 一个元素浮动了,理论上其余的兄弟元素也要浮动。
如果不浮动会出问题
浮动的盒子只会影响浮动盒子后面的标准流不会影响前面的标准流.

清除浮动

清除浮动本质:解决父级元素因为子元素浮动引起的内部高度为0的问题。【本来子盒子是可以把父亲撑开的,但是浮动相当于飘起来,没法撑开了,父亲如果不设置高度,高度就会变成0】

清除浮动之后,父级就会根据浮动的子盒子自动检测高度。

清除浮动语法

选择器{clear:属性值;}

属性值 描述
left         清除左侧浮动的影响
right 清除右侧浮动的影响
both 同时清除

 我们实际工作中, 几乎只用 clear: both;

额外标签法 

额外标签法也称为隔墙法,是 W3C 推荐的做法。 

额外标签法会在浮动元素末尾添加一个空的标签,例如 <div style=”clear:both”></div> 

注意: 要求这个新的空标签必须是块级元素。 

其他方法 

1、父级添加 overflow 属性

        给父级添加 overflow 属性,将其属性值设置为 hidden、 auto 或 scroll 。

2、父级添加after伪元素

         :after 方式是额外标签法的升级版。也是给父元素添加

.clearfix:after {
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix { /* IE6、7 专有 */
*zoom: 1;
}

3、 父级添加双伪元素

         也是给给父元素添加

.clearfix:before,.clearfix:after {
content:"";
display:table;
}
.clearfix:after {
clear:both;
}
.clearfix {
*zoom:1;
}

猜你喜欢

转载自blog.csdn.net/weixin_46764819/article/details/123336658