zoukankan      html  css  js  c++  java
  • 2.CSS

    什么是 CSS?

    • CSS 指层叠样式表 (Cascading Style Sheets)
    • 样式定义如何显示 HTML 元素,如颜色,大小,粗细,字体,边框,布局编排等等

    CSS样式有哪几种?具体是怎样表现的?

    • 内联样式(inline-style),位于 HTML元素标签内部。
    • 内部样式表(internal style sheet),位于 <head> 标签内部。
    • 外部样式表(External style sheet),以.css文件形式单独存在。
    <--!内联样式-->
    <p style="color:sienna;margin-left:20px">这是一个段落。</p>
    
    
    <--!内部样式表-->
    <style>    
      选择器 {属性名称: 属性值;}    
      h2 {color: red;}    
    </style>
    
    
    <--!外部样式表,HTML引用声明-->
    <head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head>
    
    /* .css文件 */
    h {color:sienna;}           
    p {margin-left:20px;}            
    body {background-image:url(/images/back40.gif);} 

    CSS样式优先级别

    • 内联样式(inline-style)> 内部样式表(internal style sheet)> 外部样式表(External style sheet)> 浏览器默认样式
    • 同一样式同一选择器的重复渲染,后者会覆盖前者
    • 同一样式不同选择器,Id选择器的优先级大于class选择器
    • 如果样式被后者覆盖,如还想使用初始样式。可以加上 !important强制使用当前样式
    <style>
    body {
    color: green;
    }
    <--!如下样式会覆盖上面body样式-->
    .pink-text{
        color:pink; 
    }
    </style>
    <body>
        <h1 class="pink-text">Hello World!</h1>
    </body>
    
    
    
    .pink-text {
    color: pink;
    }
    <--!同样下面的会覆盖前面的,而不会取决class在元素中的先后-->
    .blue-text{
        color:blue;   
    }
    </style>
    <body>
    <h1 class="blue-text pink-text ">Hello World!</h1>
    </body>
    
    
    
    <--!  id优先级>class优先级 -->
    #orange-text{
        color:orange;
    }
    .pink-text {
    color: pink;
    }
    .blue-text {
    color: blue;
    }
    </style>
    <body>
    <h1 class="pink-text blue-text" id='orange-text'>Hello World!</h1>
    </body>
    
    
    
    #orange-text {
    color: orange ;
    }
    <--!尚方宝剑在手,此时又是他生效了哦-->
    .pink-text {
    color: pink !important;
    }
    .blue-text {
    color: blue;
    }
    </style>
    <h1 id="orange-text" class="pink-text blue-text" style="color: white">Hello World!</h1>

    CSS选择器

    1.标签选择器


    p  选择所有<p>元素
    { 
        background-color:yellow;
    }
    
    
    h1,p  选择所有<h1>元素和<p>元素
    { 
    background-color:yellow;
    }
    
    div p  选择<div>元素内的所有<p>元素
    { 
    background-color:yellow;
    }
    
    div>p   选择所有父级是 <div> 元素的 <p> 元素
    { 
    background-color:yellow;
    }
    
    div+p   选择所有紧接着<div>元素之后的<p>元素
    { 
    background-color:yellow;
    }

    2.id选择器


    #firstname  选择所有id="firstname"的元素
    { 
    background-color:yellow;
    }
    <--! 注意同一个ID只能在一个HTML文件中出现一次,可联想为ID card -->

    3.class选择器


     

    .intro  选择所有class="intro"的元素
    { 
    background-color:yellow;
    }

    <--! 注意同一个class在一个HTML文件中可多次使用 -->

    4.属性选择器


    a[target]      选择所有带有target属性元素
    { 
    background-color:yellow;
    }
    
    
    a[target=_blank]  选择所有使用target="-blank"的元素
    { 
    background-color:yellow;
    }
    
    
    [title~=flower]  选择标题属性包含单词"flower"的所有元素
    { 
    background-color:yellow;
    }
    
    [lang|=en]  选择一个lang属性的起始值="EN"的所有元素
    { 
    background-color:yellow;
    }

     5.伪元素和伪类


    伪元素:控制的内容和元素是没有差别的,但是它本身只是基于元素的抽象,并不存在于文档中,所以称为伪元素。如first-letter,first-line等。

    伪类:由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类 。 如anchor,first-child等。

    <--! 伪元素使用方法 -->
    selector:pseudo-element {property:value;}
    
    selector.class:pseudo-element {property:value;}
    
    p:first-letter 
    {
    color:#ff0000;
    font-size:xx-large;
    }
    
    <--! 伪类使用方法 -->
    
    selector:pseudo-class {property:value;}
    
    selector.class:pseudo-class {property:value;}
    
    <html> 
    <head> 
    <style> 
    <--! p标签第一行变蓝 -->
    p:first-child 
    { 
    color:blue; 
    } 
    </style> 
    </head> 
    
    <body> 
    <p>I am a strong man.</p>  
    <p>I am a strong man.</p> 
    </body> 
    </html>

    CSS 盒子模型(Box Model)


    所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

    盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。下面的图片说明了盒子模型(Box Model):

    • Margin(外边距) - 清除边框区域。Margin没有背景颜色,它是完全透明
    • Border(边框) - 边框周围的填充和内容。边框是受到盒子的背景颜色影响
    • Padding(内边距) - 清除内容周围的区域。会受到框中填充的背景颜色影响
    • Content(内容) - 盒子的内容,显示文本和图像

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

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

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

    CSS Positioning(定位)


    CSS定位属性允许你为一个元素定位。它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么。

    元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非事先设定position属性。他们也有不同的工作方式,这取决于定位方法.

    有四种不同的定位方法。

    1.Static 定位

    HTML元素的默认值,即没有定位,元素出现在正常的流中。

    静态定位的元素不会受到top, bottom, left, right影响。

    2.Fixed 定位

    元素的位置相对于浏览器窗口是固定位置。

    即使窗口是滚动的它也不会移动:

    p.pos_fixed 
    { 
    position:fixed; 
    top:30px; 
    right:5px; 
    }

    3.Relative 定位

    相对定位元素的定位是相对其正常位置。可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。

    h2.pos_left 
    { 
    position:relative; 
    left:-20px; 
    } 
    h2.pos_right 
    { 
    position:relative; 
    left:20px; 
    }

    4.Absolute 定位

    绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>:

    h2 
    { 
    position:absolute; 
    left:100px; 
    top:150px; 
    }

    Absolutely定位使元素的位置与文档流无关,因此不占据空间。Absolutely定位的元素和其他元素重叠。

    5.重叠的元素

    元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素。z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)

    一个元素可以有正数或负数的堆叠顺序:

    img 
    { 
    position:absolute; 
    left:0px; 
    top:0px; 
    z-index:-1; 
    }

    具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

    注意: 如果两个定位元素重叠,没有指定z - index,最后定位在HTML代码中的元素将被显示在最前面。

    CSS Float(浮动)

    CSS float 属性定义元素在哪个方向浮动,浮动元素会生成一个块级框,直到该块级框的外边缘碰到包含框或者其他的浮动框为止。默认块级标签会独占一行,用float可以让块级标签浮动在一起。

    元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。

    浮动元素之后的元素将围绕它。浮动元素之前的元素将不会受到影响。

    <--! 右浮动 -->
    img 
    { 
    float:right; 
    }
    
    <--! 并列浮动 -->
    .thumbnail 
    { 
    float:left; 
    110px; 
    height:90px; 
    margin:5px; 
    }
    
    <--! 清除浮动 -->
    .text_line 
    { 
    clear:both; 
    }

    最后,关于伪类和伪元素的区别,可以参考如下链接:

    1.CSS3伪类和伪元素的特性和区别:https://www.cnblogs.com/ihardcoder/p/5294927.html

    2.详解 CSS 属性 - 伪类和伪元素的区别:https://segmentfault.com/a/1190000000484493

     


      

  • 相关阅读:
    LeetCode 1122. Relative Sort Array (数组的相对排序)
    LeetCode 46. Permutations (全排列)
    LeetCode 47. Permutations II (全排列 II)
    LeetCode 77. Combinations (组合)
    LeetCode 1005. Maximize Sum Of Array After K Negations (K 次取反后最大化的数组和)
    LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)
    LeetCode 1219. Path with Maximum Gold (黄金矿工)
    LeetCode 1029. Two City Scheduling (两地调度)
    LeetCode 392. Is Subsequence (判断子序列)
    写程序判断系统是大端序还是小端序
  • 原文地址:https://www.cnblogs.com/robindong/p/9607672.html
Copyright © 2011-2022 走看看