zoukankan      html  css  js  c++  java
  • web十五讲,CSS高级

    对齐块元素

    • 块元素指的是占据全部可用宽度的元素,并且在其前后都会换行。
    • 块元素的例子:<h1>、<p>、<div>

    使用margin属性来水平对齐

    • 可通过将左和右边距设置为"auto",来对齐块元素。

    • 把左和右外边距设置为auto,指的是均等地分配可用的外边距。结果就是居中的元素:

      。center{
          margin-left:auto;
          margin-right:auto;
          70%;
          background-color:#b0e0e6;
      }
      

      案例:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <style>
              .center {
                  margin: auto;
                   70%;
                  background-color: #b0e0e6;
              }
          </style>
          <title>CSS 水平对齐</title>
      </head>
      
      <body>
          <div class="center">
              <p>这是一个段落。这是一个段落。这是一个段落。这是一个段落。这是一个段落。</p>
              <p>这是一个段落。这是一个段落。这是一个段落。这是一个段落。这是一个段落。</p>
          </div>
      
          <p>提示:如果宽度是 100%,则对齐没有效果</p>
          <p><b>注释:</b>除非已经声明了 !DOCTYPE,否则使用 margin:auto 在 IE8 以及更早的版本中是无效的。</p>
      </body>
      
      
      </html>
      

    使用position属性进行左和右对齐

    • 对齐元素的方法之一是使用绝对定位

      .right{
          position:absolute;
          right:0px;
          300px;
          background-color:#b0e0e6;
      }
      

      案例:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <style>
              .right {
                  position: absolute;
                  right: 0px;
                   100px;
                  background-color: #b0e0e6;
              }
      
          </style>
          <title>使用 position 属性进行左和右对齐</title>
      </head>
      
      <body>
          <div class="right">
              <p>这是一个段落。这是一个段落。这是一个段落。这是一个段落。这是一个段落。</p>
              <p>这是一个段落。这是一个段落。这是一个段落。这是一个段落。这是一个段落。</p>
              <p>.right
                  {
                  position:absolute;
                  right:0px;
                  300px;
                  background-color:#b0e0e6;
                  }</p>
          </div><hr>
      </body>
      
      </html>
      

    跨浏览器兼容性问题

    • 当像这样对齐元素时,对<body>元素的外边距和内边距进行预定义是一个好主意。这样可以避免在不同浏览器中出现可见的差异。

      body{
          margin:0;
          padding:0;
      }
      .container{
          position:relative;
          100%;
      }
      .right{
          position:absolute;
          right:0px;
          300px;
          background-color:#b0e0e6;
      }
      

    使用float属性来进行左和右对齐

    • 对齐元素的另一种方式是使用float属性:

      .right{
          float:right;
          300px;
          background-color:#b0e0e6;
      }
      

    CSS尺寸(Dimension)

    • CSS尺寸(Dimension)属性允许你控制元素的高度和宽度。同样,它允许你增加行间距。

      属性 描述
      height 设置元素高度
      line-height 设置行高
      max-height 设置元素的最大行高
      max-width 设置元素的最大宽度
      min-height 设置元素的最小高度
      min-width 设置元素的最小宽度
      width 设置元素的宽度
    • 可能的值:

      描述
      auto 默认,浏览器会自动计算出实际的高度。
      length 使用px、cm等单位定义高度。
      % 基于包含它的块级对象的百分比高度。
      inherit 从父元素继承height属性值。

    CSS分类属性

    • CSS分类属性允许你控制如何显示元素,设置图像显示于另一元素中的何处:

      • 相对于其正常位置来定位元素;

      • 使用绝对值来定位元素;

      • 以及元素的可见度。

        属性 描述
        clear 设置一个元素的侧面是否允许其他的浮动元素。
        cursor 规定当指向某元素之上时显示的指针类型。
        display 设置是否及如何显示元素。
        float 定义元素在哪个方向浮动。
        position 把元素放置到一个静态的、相对的、绝对的或固定的位置中。
        visibility 设置元素是否可见
    • CSS display属性

    描述
    none 此元素不会显示。
    block 此元素将显示为块级元素,前后有换行符。
    inline 默认。此元素会被显示为内联元素,前后无换行符。
    inline-block 行内块元素。
    list-item 此元素会作为列表显示。
    run-in 此元素会根据上下文作为块级元素或内联元素显示。
    compact 该值由于很少用,在CSS2.1中已被删除。
    marker 该值由于很少用,在CSS2.1中已被删除。
    table 此元素会作为块级表格来显示(类似<table>),表格前后有换行符。
    inline-table 此元素会作为内联表格来显示(类似<table>),表格前后无换行符。
    table-row-group 此元素会作为一个或多个行的分组来显示(类似<tbody>)。
    table-header-group 此元素会作为一个或多个行的分组来显示(类似<thead>)。
    table-footer-group 此元素会作为一个或多个行的分组来显示(类似<tfoot>)。
    table-row 此元素会作为一个表格行显示(类似<tr>)。
    table-column-group 此元素会作为一个或多个列的分组来显示(类似<colgroup>)。
    table-column 此元素会作为一个单元格列显示(类似<col>)。
    table-cell 此元素会作为一个表格单元格显示(类似<td>和<th>)。
    table-caption 此元素会作为一个表格标题显示(类似<caption>)。
    inherit 规定从父元素继承display属性的值。

    注:

    • inline:默认。此元素会被显示为内联元素,前后无换行符。
    • block:此元素将显示为块级元素,前后有换行符。
      • 比如在一个项目列表中,每项都是超链接,正常是鼠标移动到文字上才激活超链接,如果你把li设置为块级元素,那么鼠标移动到这个块上也就是这个li的范围就会激活超链接!
    • none:此元素不会被显示。

    案例:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>CSS display 属性</title>
        <style type="text/css">
            p {
                display: inline
            }
    
            div {
                display: none
            }
    
            span {
                display: block
            }
        </style>
    </head>
    
    <body>
        <p>本例中的样式表把段落元素设置为内联元素。</p>
    
        <p>而 div 元素不会显示出来!</p>
    
        <div>div 元素的内容不会显示出来!</div>
    
        <span>本例中的样式表把 span 元素设置为块级元素。</span>
        <span>两个 span 元素之间产生了一个换行行为。</span>
    </body>
    
    </html>
    

    导航栏

    • 拥有易用的导航条对任何网站都很重要。

    • 通过CSS,可以把乏味的HTML菜单转换成漂亮的导航栏。

    • 导航栏 = 连接列表。

    • 导航栏需要标准的HTML作为基础。

    • 导航栏基本上是一个链接列表,因此使用<ul>和<li>元素是非常合适的。

      • 案例1:

        <!DOCTYPE html>
        <html lang="en">
        
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta http-equiv="X-UA-Compatible" content="ie=edge">
            <title>导航栏基本上是一个链接列表</title>
            <style>
                ul.test {
                    list-style-type: none;
                    margin: 0;
                    padding: 0;
                
                }
        
            </style>
        
        </head>
        
        <body>
            <ul>
                <li><a href="#home">Home</a></li>
                <li><a href="#news">News</a></li>
                <li><a href="#contact">Contact</a></li>
                <li><a href="#about">About</a></li>
            </ul>
        
            <ul class="test">
                <li><a href="#home">Home</a></li>
                <li><a href="#news">News</a></li>
                <li><a href="#contact">Contact</a></li>
                <li><a href="#about">About</a></li>
            </ul>
            <p><b>注释:</b>我们使用在测试链接中使用了 href="#"。在真实的网站中,应该是真实的 URL。</p>
        </body>
        
        </html>
        

    • 案例2:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>完整样式的导航栏实例</title>
          <style>
              ul {
                  list-style-type: none;
                  margin: 0;
                  padding: 0;
              }
      
              a:link,
              a:visited {
                  display: block;
                  font-weight: bold;
                  color: #FFFFFF;
                  background-color: #bebebe;
                   100px;
                  text-align: center;
                  padding: 4px;
                  text-decoration: none;
                  text-transform: uppercase;
              }
      
              a:hover,
              a:active {
                  background-color: #cc0000;
              }
          </style>
      </head>
      
      <body>
          <ul>
              <li><a href="#home">Home</a></li>
              <li><a href="#news">News</a></li>
              <li><a href="#contact">Contact</a></li>
              <li><a href="#about">About</a></li>
          </ul>
      </body>
      
      </html>
      

    • 案例3:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>完整样式的导航栏实例</title>
          <style>
              ul {
                  list-style-type: none;
                  margin: 0;
                  padding: 0;
              }
      
              a:link,
              a:visited {
                  display: block;
                  font-weight: bold;
                  color: #FFFFFF;
                  background-color: #bebebe;
                   100px;
                  text-align: center;
                  padding: 4px;
                  text-decoration: none;
                  text-transform: uppercase;
              }
      
              a:hover,
              a:active {
                  background-color: #cc0000;
              }
      
              .向左浮动 {
                  float: left;
              }
          </style>
      </head>
      
      <body>
          <ul>
              <li class="向左浮动"><a href="#home">Home</a></li>
              <li class="向左浮动"><a href="#news">News</a></li>
              <li class="向左浮动"><a href="#contact">Contact</a></li>
              <li class="向左浮动"><a href="#about">About</a></li>
          </ul>
      </body>
      
      </html>
      

    • 从列表中去掉圆点和外边距

      ul{
          list-style-type:none;  /* 取消圆点 */
          margin:0;  /* 取消外边距 */
          padding:0;  /* 取消内边距 */
      }
      
    • 垂直导航栏:如果要构建垂直导航栏,只需要定义<a>元素的样式

      • display:block 把链接显示为块元素,可使整个链接区域可点击(不仅仅是文本)。

        a{
            display:block;
            60px;
        }
        
    • 完整样式的导航栏:见上面的案例2

    • 水平导航栏:

      • 有2种创建水平导航栏的方法:使用行内显示和浮动列表项。

        li{
            display:inline;  /* 行内显示 */
        }
        
        li{
            float:left;  /* 向左浮动显示列表项 */
        }
        a{
            display:block;  /* 块方式显示导航栏 */
            60px;  /* 宽度固定为60px */
        }
        
      • 两种方法都可以,但若需要链接拥有相同尺寸就只能使用浮动方法。

    • 图片库:

      <!DOCTYPE html>
      <html lang="en">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <meta http-equiv="X-UA-Compatible" content="ie=edge">
          <title>CSS 图片库</title>
          <style>
              div.img {
                  margin: 3px;
                  border: 1px solid #bebebe;
                  height: auto;
                   auto;
                  float: left;
                  text-align: center;
              }
      
              div.img img {
                  display: inline;
                  margin: 3px;
                  border: 1px solid #bebebe;
              }
      
              div.img a:hover img {
                  border: 1px solid #333333;
              }
      
              div.desc {
                  text-align: center;
                  font-weight: normal;
                   150px;
                  font-size: 12px;
                  margin: 10px 5px 10px 5px;
              }
          </style>
      </head>
      
      <body>
          <div class="img">
              <a target="_blank" href="img/tulip_ballade.jpg" height="">
                  <img src="img/tulip_ballade_s.jpg" alt="Ballade" width="160" height="160">
              </a>
              <div class="desc">春意盎然</div>
          </div>
      
          <div class="img">
              <a target="_blank" href="img/tulip_flaming_club.jpg">
                  <img src="img/tulip_flaming_club_s.jpg" alt="Ballade" width="160" height="160">
              </a>
              <div class="desc">繁花似锦</div>
          </div>
      
          <div class="img">
              <a target="_blank" href="img/tulip_fringed_family.jpg">
                  <img src="img/tulip_fringed_family_s.jpg" alt="Ballade" width="160" height="160">
              </a>
              <div class="desc">在此处添加对图像的描述</div>
          </div>
      
          <div class="img">
              <a target="_blank" href="img/tulip_peach_blossom.jpg">
                  <img src="img/tulip_peach_blossom_s.jpg" alt="Ballade" width="160" height="160">
              </a>
              <div class="desc">在此处添加对图像的描述</div>
          </div>
      </body>
      
      </html>
      

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/fz17/p/14136464.html
Copyright © 2011-2022 走看看