zoukankan      html  css  js  c++  java
  • html css项目积累汇总

    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像素的黑色实线。

    显示的效果:

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

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

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

    我们可以根据-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

    显示效果:

     

    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

    显示效果:

    小结:我们在类名为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

    显示效果:

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

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

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

    具体距离显示如下:

    (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无限的撑大,如下图的所示。

    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

    显示效果:

    现在我们给上段代码中的父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

    显示效果:

    小结:在默认情况下,当我们设置了父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

    显示效果:

    小结:我们很容易发现一个问题,就是为黑色背景的父元素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

    (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

    显示效果:

    小结:我们没有看到黑色的父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

    显示效果如下:

    小结(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

    显示效果:

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

    我们来测量一下:

    我们可以发现,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

    显示效果:

    (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

    显示效果:

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

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

     

     

     

     

     

     

  • 相关阅读:
    【NOI D2T1】量子通信(容斥原理+卡常)
    CF1555D Say No to Palindromes(线段树)
    CF1554B Cobb
    CF1554A Cherry
    【做题笔记】UVA10162 Last Digit
    【做题记录】CF1223D Sequence Sorting
    CF39H
    UVA10763
    题解 AT2361 [AGC012A] AtCoder Group Contest
    このブログについて | About this blog
  • 原文地址:https://www.cnblogs.com/niuwa/p/7597810.html
Copyright © 2011-2022 走看看