html css项目积累汇总

摘要:
并在样式中,给ul设置宽度为:536px,高度:20px,边框为1像素的黑色实线。显示的效果:由上图,我们可以看出ul.imglist的宽度居然变成了578px,除去边框的2px,576px减去536px,整整多出了40px。究其根本原因,是因为浏览器对HTML元素默认样式设置不同所产生的。font:14px/22px"\9ED1\4F53";14px是指字体大小,font-size。22px是指行距,line-height。margin:0auto可拆分为:margin:0auto0automargin-top:0;margin-right:auto;margin-bottom:0;margin-left:auto;下面,让我们看一段代码:12345margin:0auto;的作用67.aa,.bb{8width:300px;9height:50px;10}11.aa{12border:1pxsolid#F00;13margin-bottom:30px;14}15.bb{16border:1pxsolid#00F;17}18192021222324ViewCode显示效果:小结:我们在类名为aa的div中设置属性:margin-bottom:30px;,效果如上图所示。

1、关于ul的padding-left:40px的问题;

首先,我们来看一段代码:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>ul的padding-left:40px的问题</title>
6     <style type="text/css">
7 ul.imglist{
8 width:536px;
9 height:20px;
10 border:1px solid #000;
11     }
12 </style>
13 </head>
14 <body>
15     <ul class="imglist"></ul>
16 </body>
17 </html>
View Code

以上代码中,我们给ul元素设置了一个类属性,命名为imglist。

并在样式中,给ul设置宽度为:536px,高度:20px,边框为1像素的黑色实线。

显示的效果:

html css项目积累汇总第1张

由上图,我们可以看出ul.imglist的宽度居然变成了578px,除去边框的2px,576px减去536px,整整多出了40px。

究其根本原因,是因为浏览器对HTML元素默认样式设置不同所产生的

Firefox浏览器中的默认样式里面关于ul和ol的定义:

html css项目积累汇总第2张

我们可以根据-moz-padding-start:40px,可以得出浏览器对ul和ol元素,默认会自动加上40px的填充。
那我们应该怎么样处理掉这浏览器默认的40px填充的像素?我们需要将常用的元素的内外边界初始化。
有以下两种解决办法:
1、在css的开头加上:
*{
margin: 0px;
padding: 0px;
}
但是这一种方式比较占资源
2、第二种方式,指它特定的标签设置:
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, table, th, td {
margin:0;
padding:0;
}

下面我们修改一下代码:对ul进行初始化设置。

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>ul的padding-left:40px的问题</title>
6     <style type="text/css">
7 ul{
8 margin:0px;
9 padding:0px;
10     }
11 ul.imglist{
12 width:536px;
13 height:20px;
14 border:1px solid #000;
15     }
16 </style>
17 </head>
18 <body>
19     <ul class="imglist"></ul>
20 </body>
21 </html>
View Code

显示效果:

html css项目积累汇总第3张

2、在代码中,中文字体为什么要用Unicode编码?

在代码中,我们常常把“宋体”写成“\5b8b\4f53”。当网页的编码是 utf-8时,某些情况下直接写:宋体、微软雅黑之类的中文字体名字时,会出现不能识别导致字体设置失效的问题,如果把字体名字转成对应编码如:‘\5b8b\4f53’,就不会出现这个问题。

3、font:14px/22px "\9ED1\4F53";是什么意思呢?

font:14px/22px "\9ED1\4F53";
14px是指字体大小,font-size。
22px是指行距,line-height。
"\9ED1\4F53"是指黑体。

4、margin:0 auto;的作用?

(1)语法格式

margin:0 auto;设置对象的上下间距为0,左右自动。

margin:0 auto可拆分为:margin: 0 auto 0 auto

margin-top: 0; margin-right: auto;margin-bottom: 0;margin-left: auto;(上、右、下、左)

下面,让我们看一段代码:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .aa,.bb{
8 width:300px;
9 height:50px;
10     }
11 .aa{
12 border:1px solid #F00;
13 margin-bottom:30px;
14     }
15 .bb{
16 border:1px solid #00F;
17     }
18 </style>
19 </head>
20 <body>
21     <div class="aa"></div>
22     <div class="bb"></div>
23 </body>
24 </html>
View Code

显示效果:

html css项目积累汇总第4张

小结:我们在类名为aa的div中设置属性:margin-bottom: 30px;,效果如上图所示。

(2)作用

在div标签上设置margin:0 auto样式,是为了让div在浏览器中水平居中。

布局居中,水平居中,均可加入:margin:0 auto样式即可。

(3)关键点

关键点是:auto(自动,自适应)

将上面的代码进行修改,如下所示:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .aa,.bb{
8 width:300px;
9 height:50px;
10 margin:0 auto;
11     }
12 .aa{
13 border:1px solid #F00;
14 margin-bottom:30px;
15     }
16 .bb{
17 border:1px solid #00F;
18     }
19 </style>
20 </head>
21 <body>
22     <div class="aa"></div>
23     <div class="bb"></div>
24 </body>
25 </html>
View Code

显示效果:

html css项目积累汇总第5张

小结:以上例子中,我们统一设置div(aa)和div(bb)的宽度为:300px,边框1px。

可以测量出,浏览器的body长度为:1366px,因为设置了margin:0 auto,左右的边距自动,浏览会自动去解析div,左右边距自动设置值为(body长度-

(div长度+2*边框))/2,即为(1366px-(300+2))/2等于532px。

具体距离显示如下:

html css项目积累汇总第6张

html css项目积累汇总第7张

(4)为什么要设置margin:0 auto?

1、让div布局,水平居中于浏览器;

2、兼容各大浏览器让布局居中;

注意点:加入div居中布局中,如果果入了margin::0 auto就不能加入float浮动样式,避免逻辑错误,造成布局居中不兼容。

5、理解overflow: hidden的作用

我们先来看一段代码:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 }
10 .div1{
11 background-color:aqua;
12 width:100px;
13 height:100px;
14 }
15 .div2{
16 background-color:red;
17 width:100px;
18 height:100px;
19 }
20 </style>
21 </head>
22 <body>
23     <div class="container">
24         <div class="div1"></div>
25         <div class="div2"></div>
26     </div>
27 </body>
28 </html>
View Code

显示效果如下:父级div(container)的高度是auto,可以被子div无限的撑大,如下图的所示。

html css项目积累汇总第8张

1、隐藏溢出;

现在我们给上段代码中的div(container),设置高度:height: 150px;

代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 height:150px;
10 }
11 .div1{
12 background-color:aqua;
13 width:100px;
14 height:100px;
15 }
16 .div2{
17 background-color:red;
18 width:100px;
19 height:100px;
20 }
21 </style>
22 </head>
23 <body>
24     <div class="container">
25         <div class="div1"></div>
26         <div class="div2"></div>
27     </div>
28 </body>
29 </html>
View Code

显示效果:

html css项目积累汇总第9张

现在我们给上段代码中的父div(container),设置高度:height: 150px的同时,加入overflow: hidden;代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 height:150px;
10 overflow:hidden;
11 }
12 .div1{
13 background-color:aqua;
14 width:100px;
15 height:100px;
16 }
17 .div2{
18 background-color:red;
19 width:100px;
20 height:100px;
21 }
22 </style>
23 </head>
24 <body>
25     <div class="container">
26         <div class="div1"></div>
27         <div class="div2"></div>
28     </div>
29 </body>
30 </html>
View Code

显示效果:

html css项目积累汇总第10张

小结:在默认情况下,当我们设置了父div(container)的高度为150px,子级div(div1, div2)的高度和为:200px,大于父级div(container)的高度,所以

此时子级div就会溢出父级div,如上图所示。

当我们在父div(container)上设置了:overflow: hidden;的时候,情况就发生变化了。overflow对子div(div1, div2)进行控制,设置overflow: hidden;

属性可以将超出父级div的子div进行溢出隐藏。

2、清除浮动

我们来看下面一段代码:

当父元素的高height:auto时,子元素分别设置:float:left时,使用overflow: hidden;来清除浮动。

①不清除浮动的时候

代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 }
10 .div1{
11 float:left;
12 background-color:aqua;
13 width:100px;
14 height:100px;
15 }
16 .div2{
17 float:left;
18 background-color:red;
19 width:100px;
20 height:100px;
21 }
22 </style>
23 </head>
24 <body>
25     <div class="container">
26         <div class="div1"></div>
27         <div class="div2"></div>
28     </div>
29 </body>
30 </html>
View Code

显示效果:

html css项目积累汇总第11张

小结:我们很容易发现一个问题,就是为黑色背景的父元素div(container)消失了?

为什么会出现这样的情况呢?

原因是:子元素是浮动的,浮动的元素脱离文档元素,不占据空间。

不浮动的父级元素会直接无视这些浮动的子元素,又加之父元素div(container)的height:auto,即我们并没有设置,所以父元素div就没有显示出来了。

②清除浮动的时候

(1)方法一:使用overflow: hidden;

代码始下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 overflow:hidden;
10 }
11 .div1{
12 float:left;
13 background-color:aqua;
14 width:100px;
15 height:100px;
16 }
17 .div2{
18 float:left;
19 background-color:red;
20 width:100px;
21 height:100px;
22 }
23 </style>
24 </head>
25 <body>
26     <div class="container">
27         <div class="div1"></div>
28         <div class="div2"></div>
29     </div>
30 </body>
31 </html>
View Code

html css项目积累汇总第12张

(2)方法二:给父div(container)设置float

当然,我们还可以有另外一种方法清除浮动,那就是父div(container)本身也设置float;

代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 float:left;
9 background-color:black;
10 }
11 .div1{
12 float:left;
13 background-color:aqua;
14 width:100px;
15 height:100px;
16 }
17 .div2{
18 float:left;
19 background-color:red;
20 width:100px;
21 height:100px;
22 }
23 </style>
24 </head>
25 <body>
26     <div class="container">
27         <div class="div1"></div>
28         <div class="div2"></div>
29     </div>
30 </body>
31 </html>
View Code

显示效果:

html css项目积累汇总第13张

小结:我们没有看到黑色的父div(container)的身影,但是我们可以借助浏览器,很明显的看到父div(container),包含了两个子div(div1,div2)。这是因为浮动的div已经失去了“独霸一行”的能力,当我们手动为其设置一个宽度,如下代码所示:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 float:left;
9 background-color:black;
10 width:500px;
11 }
12 .div1{
13 float:left;
14 background-color:aqua;
15 width:100px;
16 height:100px;
17 }
18 .div2{
19 float:left;
20 background-color:red;
21 width:100px;
22 height:100px;
23 }
24 </style>
25 </head>
26 <body>
27     <div class="container">
28         <div class="div1"></div>
29         <div class="div2"></div>
30     </div>
31 </body>
32 </html>
View Code

显示效果如下:

html css项目积累汇总第14张

小结(1)方法一:使用overflow: hidden; (2)方法二:给父div(container)设置float

以上两种方法,一种是使用了清除浮动的战略,一种是使用了浮动的战略,使父div接受子div。两者的区别在于如果都浮动的话,需要额外的设置父div的

宽度,因为浮动起来的div失去了独占一行的特征,而清除浮动的div仍然霸道

3、解决坍塌

(1)可以使用overflow:hidden解决margin坍塌;

坍塌是不分父级div的高度是否固定的。

首先,我们要知道什么叫做坍塌?

我们在div1中加入margin-top: 50px;代码如下,我们来看看不坍塌时的效果。

代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 overflow:hidden;
9 background-color:black;
10 }
11 .div1{
12 margin-top:50px;
13 background-color:aqua;
14 width:100px;
15 height:100px;
16 }
17 .div2{
18 background-color:red;
19 width:100px;
20 height:100px;
21 }
22 </style>
23 </head>
24 <body>
25     <div class="container">
26         <div class="div1"></div>
27         <div class="div2"></div>
28     </div>
29 </body>
30 </html>
View Code

显示效果:

html css项目积累汇总第15张

当去掉 overflow: hidden;代码如下:

html css项目积累汇总第16张

我们来测量一下:

html css项目积累汇总第17张

我们可以发现,div1的上端距离浏览器的顶部距离是50px,而不是对它的父div。这就是坍塌。

这种坍塌指针对父亲的第一个儿子div1,div2设置margin-top: 50px;

则不会有影响。

代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 }
10 .div1{
11 background-color:aqua;
12 width:100px;
13 height:100px;
14 }
15 .div2{
16 margin-top:50px;
17 background-color:red;
18 width:100px;
19 height:100px;
20 }
21 </style>
22 </head>
23 <body>
24     <div class="container">
25         <div class="div1"></div>
26         <div class="div2"></div>
27     </div>
28 </body>
29 </html>
View Code

显示效果:

html css项目积累汇总第18张

(2)考虑用符动来解决坍塌的问题;

我们给父div设置高度height:200px,然后给子div设置float:left;代码如下:

1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>margin:0 auto;的作用</title>
6     <style type="text/css">
7 .container{
8 background-color:black;
9 height:200px;
10 }
11 .div1{
12 margin-top:50px;
13 float:left;
14 background-color:aqua;
15 width:100px;
16 height:100px;
17 }
18 .div2{
19 float:left;
20 background-color:red;
21 width:100px;
22 height:100px;
23 }
24 </style>
25 </head>
26 <body>
27     <div class="container">
28         <div class="div1"></div>
29         <div class="div2"></div>
30     </div>
31 </body>
32 </html>
View Code

显示效果:

html css项目积累汇总第19张

显然易见,只要是符动的div就避免了坍塌的问题了。(无论是父div是否浮动)

总结:可以使用overflow:hidden来解除坍塌,浮动的div根本不用考虑坍塌;overflow:hidden的用法在溢出和清除浮动上主要针对父div是否有固定的高度加以区分。它还额外肩负了解除坍塌的重任。

免责声明:文章转载自《html css项目积累汇总》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]Linux/Unix系统镜像/备份/恢复 (dd 命令使用)通过Metricbeat实现外部对Elastic Stack的监控下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css cross-fade()实现背景图像半透明效果

实现图像半透明的方法挺多,无论是filter滤镜、mask遮罩、opacity透明度设置都可以实现 要用background-image背景图片实现的话,可能第一个就会想到使用::before、::after伪元素实现,例如: .box {position:relative;z-index:0; }.box::before {content:'';posi...

less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)

前端技术众多,作为一名前端工程师,我们每接触新技术首先要懂得此技术的优势和劣势,这是最基本的。往深入了说还需要懂得技术的应用场景,与之配合的技术等,方便为以后架构做准备。而less作为一门CSS预处理语言,拥有函数式变成的特点,主要优点就是高效。主要适用于包含众多CSS的大型项目。主要体现在:项目公共样式的定义,如页面主色、固定数值(宽、高、时间等)、公用...

C#: 通过html调用WinForm 。。。。。

完整测试代码:Form1.cs 代码 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;n...

CSS进度条

#graphbox{ border:1px solid #e7e7e7; padding:10px; 250px; background-color:#f8f8f8; margin:5px 0; } #graphbox h2{ color:#666666; font-family:Arial; font-size:18px; font-weight:700...

浏览器工作原理和实践(三)——页面

《浏览器工作原理与实践》是极客时间上的一个浏览器学习系列,在学习之后特在此做记录和总结。 一、事件循环 消息队列是一种数据结构,可以存放要执行的任务。它符合队列“先进先出”的特点,也就是说要添加任务的话,添加到队列的尾部;要取出任务的话,从队列头部去取。 从上图可以看出,改造可以分为下面三个步骤: (1)添加一个消息队列; (2)IO 线程中产生的新任务...

在ASP.NET 2.0中使用样式、主题和皮肤

ASP.NET 2.0的主题和皮肤特性使你能够把样式和布局信息存放到一组独立的文件中,总称为主题(Theme)。接下来我们可以把这个主题应用到任何站点,用于改变该站点内的页面和控件的外观和感觉。通过改变主题的内容,而不用改变站点的单个页面,就可以轻易地改变站点的样式。主题也可以在开发者之间共享。 ASP.NET包含了大量的用于定制应用程序的页面和控件的外观...