• CSS介绍


    1.什么是div

    div是html一个普通标签,进行区域划分。特性:独自占一行,独自不能事项复杂的效果。必须结合css样式进行渲染。

    div通常其实块级元素。

    <div>ke dingyi 文档中分区或节.

    <div>标签可以把文档分割为独立的不同的部分,他可以用作严格的组织工具,并且不使用任何格式与关联.

    如果用id或class来标记<div>,那么改标签的作用会变得更加有效.

    2 CSS的概述

           CSS,层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS+DIV布局更加灵活,更容易绘制出用户需要的结构.

    2.1 css的作用

    HTML:它是整个网站的骨架.

    CSS:它是对整个网站骨架的内容进行美化(装饰).

    2.2 CSS的引入方式

    css的引入方式分为三种:

    第一种:行内引入

    <div style="color:red;font-size:100px;"></div>

    第二种:内部引入方式

    <style type="text/css"> 
    div
    { color:red; font-size: 100px; }
    </style>

    第三种方式:外部引入

    如果<style type=”text/css”></style> 可以省略不写text/css,默认值就是text/css .

    优先级问题:  谁离需要修饰的元素近,谁的样式生效,其它的被覆盖掉。(就近原则)

    2.3 CSS的选择器

    2.3.1基本选择器

    CSS 基本选择器有三种(元素选择器、类选择器、id 选择器)

    ID选择器

    #id 属性名{  
                属性名 1:属性值 1; 
                属性名 2:属性值 2;
                属性名 3:属性值 3; } 

    Id 保证唯一。

    元素选择器

    元素名{  
            属性名 1:属性值 1; 
            属性名 2:属性值 2; 
            属性名 3:属性值 3; } 

    如果多个相同的元素设置相同的样式,使用此种方式最为合适.

    类选择器

    .类名{  属性名 1:属性值 1; 
             属性名 2:属性值 2; 
             属性名 3:属性值 3; } 

    对多个元素设置相同的样式,此时使用类选择器比较合适。

    2.3.2组合选择器

     E,F         多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔         div,p { color:#f00; }
    
     E F         后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔    li a { font-weight:bold;
     E > F       子元素选择器,匹配所有E元素的子元素F                            div > p { color:#f00; }
     
     E + F       毗邻元素选择器,匹配所有紧随E元素之后的同级元素F                  div + p { color:#f00; }  

    注意嵌套规则

    1. 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
    2. 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
    3. li内可以包含div
    4. 块级元素与块级元素并列、内联元素与内联元素并列。

    2.3.3属性选择器

     E[att]         匹配所有具有att属性的E元素,不考虑它的值。(注意:E在此处可以省略,比如“[cheacked]”。以下同。)   p[title] { color:#f00; }
    
     
     E[att=val]     匹配所有att属性等于“val”的E元素                                 div[class=”error”] { color:#f00; }
    
     
     E[att~=val]    匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素      td[class~=”name”] { color:#f00; }
    
     E[attr^=val]    匹配属性值以指定值开头的每个元素                     div[class^="test"]{background:#ffff00;}
    
     E[attr$=val]    匹配属性值以指定值结尾的每个元素                     div[class$="test"]{background:#ffff00;}
    
     E[attr*=val]    匹配属性值中包含指定值的每个元素                     div[class*="test"]{background:#ffff00;}

    2.4伪类

    CSS伪类是用来给选择器添加一些特殊效果。

    anchor伪类:专用于控制链接的显示效果

    a:link(没有接触过的链接),用于定义了链接的常规状态。
    
    a:hover(鼠标放在链接上的状态),用于产生视觉效果。
    
    a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。
    
    a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。
    
    伪类选择器 : 伪类指的是标签的不同状态:
    
               a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态
    
    a:link {color: #FF0000} /* 未访问的链接 */
    
    a:visited {color: #00FF00} /* 已访问的链接 */
    
    a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
    <style type="text/css">
        a:link{
            color: red;
        }
        a:visited {
            color: blue;
        }
        a:hover {
            color: green;
        }
        a:active {
            color: yellow;
        }
    </style>
    </head>
    <body>
        <a href="01-hello-world.html">hello-world</a>
    </body>
    </html>
    示例代码

    before after伪类

    :before    p:before       在每个<p>元素之前插入内容
    :after     p:after        在每个<p>元素之后插入内容
    
     p:before        在每个 <p> 元素的内容之前插入内容                    p:before{content:"hello";color:red}
     p:after         在每个 <p> 元素的内容之前插入内容                    p:after{ content:"hello";color:red}

    2.5CSS优先级和继承

    CSS优先级:

    所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。

    样式表中的特殊性描述了不同规则的相对权重,它的基本规则是:
          1 内联样式表的权值最高       style=""-------------------1000;
       2 统计选择符中的ID属性个数。    #id    -------------100
      3 统计选择符中的CLASS属性个数。 .class  -------------10
     4 统计选择符中的HTML标签名个数。     p     --------------1

    按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。

    <style>
            #p{
                color: rebeccapurple;
            }
            .p{
                color: #2459a2;
            }
            p{
                color: yellow;
            }
        </style>
    <p id="p" class="p" style="color: deeppink">hello yuan</p>
    View Code

    CSS的继承性:

     
          继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个BODY定义了的颜色值也会应用到段落的文本中。
    body{color:red;}       <p>helloyuan</p>

    这段文字都继承了由body {color:red;}样式定义的颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。

    p{color:green}

    发现只需要给加个颜色值就能覆盖掉它继承的样式颜色。由此可见:任何显示申明的规则都可以覆盖其继承样式。

     此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。

    附加说明:

    1、文内的样式优先级为1,0,0,0,所以始终高于外部定义。这里文内样式指形如<div style="color:red>blah</div>的样式,而外部定义指经由<link>或<style>卷标定义的规则。
    
      2、有!important声明的规则高于一切。
    
      3、如果!important声明冲突,则比较优先权。
    
      4、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。
    
      5、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。
    View Code

    3.CSS的常用属性

    1.颜色属性

    <div style="color:rgb(255,0,0)">ppppp</div>

    2.字体属性

    font-size: 20px/50%/larger
     
    font-family:'Lucida Bright'
     
    font-weight: lighter/bold/border/
     
    <h1 style="font-style: oblique">hello world</h1>

    3.背景属性

    background-color: cornflowerblue
    
    background-image: url('1.jpg');
    
    background-repeat: no-repeat;(repeat:平铺满)
    
    background-position: right top(20px 20px);(横向:left center right)(纵向:top center bottom)
    
          简写:<body style="background: 20px 20px no-repeat #ff4 url('1.jpg')">
    
                  <div style=" 300px;height: 300px;background: 20px 20px no-repeat #ff4 url('1.jpg')"> 

    注意:如果将背景属性加在body上,要记得给body加上一个height,否则结果异常,这是因为body为空,无法撑起背景图片;另外,如果此时要设置一个width=100px,你也看不出效果,除非你设置出html。 

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            html{
                background-color: antiquewhite;
                
            }
            body{
                width: 100px;
                height: 600px;
                background-color: deeppink;
                background-image: url(1.jpg);
                background-repeat: no-repeat;
                background-position: center center;
            }
        </style>
    </head>
    <body>
    
    </body>
    </html>
    View Code

    4.文本属性

    font-size: 10px;
    
    text-align: center;   横向排列
    
    line-height: 200px;   文本行高 通俗的讲,文字高度加上文字上下的空白区域的高度 50%:基于字体大小的百分比
    
    vertical-align:-4px  设置元素内容的垂直对齐方式 ,只对行内元素有效,对块级元素无效
    
    
    text-indent: 150px;   首行缩进
    letter-spacing: 10px;
    word-spacing: 20px;
    text-transform: capitalize;

    5.边框属性

    border: 30px rebeccapurple solid;

    6.列表属性

    ul,ol{   list-style: decimal-leading-zero;
             list-style: none; <br>         list-style: circle;
             list-style: upper-alpha;
             list-style: disc; }

    7.display属性

    none
    block
    inline

    display:inline-block可做列表布局,其中的类似于图片间的间隙小bug可以通过如下设置解决:

    #outer{
                border: 3px dashed;
                word-spacing: -5px;
            }

    8.外边距和内边距

    盒子模型,可以很好帮助理解

    • margin:            用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
    • padding:           用于控制内容与边框之间的距离;   
    • Border(边框)     围绕在内边距和内容外的边框。
    • Content(内容)   盒子的内容,显示文本和图像。

    元素的宽度和高度:

    Remark重要: 当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。

    margin:10px 5px 15px 20px;-----------上 右 下 左
    margin:10px 5px 15px;----------------上 右左 下
    margin:10px 5px;---------------------上下  右左
    margin:10px;    ---------------------上右下左

    下面的例子中的元素的总宽度为300px:

    250px;
    padding:10px;
    border:5px solid gray;
    margin:10px;   

    9.float属性

    先来了解一下block元素和inline元素在文档流中的排列方式。

      block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度。block元素可以设置width、height、margin、padding属性;

      inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。inline元素设置width、height属性无效。inline元素的margin和padding属性。水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。

    • 常见的块级元素有 div、form、table、p、pre、h1~h5、dl、ol、ul 等。
    • 常见的内联元素有span、a、strong、em、label、input、select、textarea、img、br等

    所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。

    脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位

    只有绝对定位absolute和浮动float才会脱离文档流。

           浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为 止。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在 一样。 (注意这里是块框而不是内联元素;浮动框只对它后面的元素造成影响)

           请看下图,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘.

          再请看下图,当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到 包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使 框 2 从视图中消失。 

          如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左 浮动直到碰到前一个浮动框。


     
     如下图所示,如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向 下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它 浮动元素“卡住”:

    清除浮动

           我们要对网站进行布局,显示效果希望是上图左边的效果,此时我们会将框 1 和框 2 向 左进行浮动,由于使用了浮动,它们已经脱离了文档流,框 3 会上移至原来框 1 的位置,导 致的现象是框 3 隐藏在框 1 下面。  那么此时,我们可以清除浮动来清除之前框 1 和框 2 使用浮动后造成的问题!

    解决办法一: (推荐)

    1、要么给框1设置固定高度,一般情况下文字内容不确定多少就不能设置固定高度,所以一般不能设置“框1高度(当然能确定内容多高,这种情况下“框1是可以设置一个高度即可解决覆盖问题。

    .clearfix:after {             <----在类名为“clearfix”的元素内最后面加入内容; 
    content: ".";                 <----内容为“.”就是一个英文的句号而已。也可以不写。 
    display: block;               <----加入的这个元素转换为块级元素。 
    clear: both;                  <----清除左右两边浮动。 
    visibility: hidden;           <----可见度设为隐藏。注意它和display:none;是有区别的。visibility:hidden;仍然占据空间,只是看不到而已; 
    line-height: 0;               <----行高为0; 
    height: 0;                    <----高度为0; 
    font-size:0;                  <----字体大小为0; 
    } 
    .clearfix { *zoom:1;}         <----这是针对于IE6的,因为IE6不支持:after伪类,这个神奇的zoom:1让IE6的元素可以清除浮动来包裹内部元素。

    解决方案二:清除浮动

    在框 3 的前面定义一个 div(<div id=”three”></div>) 

                              定义 CSS 样式:

                                      #three{

                                             clear:both;

                                }
     

    clear语法:
    clear : none | left | right | both
    
    取值:
    none : 默认值。允许两边都可以有浮动对象
    left : 不允许左边有浮动对象
    right : 不允许右边有浮动对象
    both : 不允许有浮动对象
    
    但是需要注意的是:clear属性只会对自身起作用,而不会影响其他元素。如果一个元素的右侧有一浮动对象,而这个元素设置了不允许右边有浮动对象,即clear:right,则这个元素会自动下移一格,达到本元素右边没有浮动对象的目的。

    10.position 定位

    1 static

    static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。

    2  position: relative/absolute

        relative 相对定位。相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

    注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。

        absolute 绝对定位。

          定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

    重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。

          另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

    总结:参照物用相对定位,子元素用绝对定位,并且保证相对定位参照物不会偏移即可。

    3  position:fixed

            fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。

           在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

    仅使用margin属性布局绝对定位元素

    此情况,margin-bottom 和margin-right的值不再对文档流中的元素产生影响,因为该元素已经脱离了文档流。另外,不管它的祖先元素有没有定位,都是以文档流中原来所在的位置上偏移参照物。  
      图9中,使用margin属性布局相对定位元素。
      层级关系为:
      <div ——————————— position:relative;
      <div—————————-没有设置为定位元素,不是参照物
      <div———————-没有设置为定位元素,不是参照物
      <div box1
      <div box2 ——–position:absolute; margin-top:50px; margin-left:120px;
      <div box3
      效果图:

  • 相关阅读:
    POJ 1811 Prime Test 素性测试 分解素因子
    sysbench的安装与使用
    电脑中已有VS2005和VS2010安装.NET3.5失败的解决方案
    I.MX6 show battery states in commandLine
    RPi 2B Raspbian system install
    I.MX6 bq27441 driver porting
    I.MX6 隐藏电池图标
    I.MX6 Power off register hacking
    I.MX6 Goodix GT9xx touchscreen driver porting
    busybox filesystem httpd php-5.5.31 sqlite3 webserver
  • 原文地址:https://www.cnblogs.com/Young111/p/9537613.html
Copyright © 2020-2023  润新知