pc端的企業網站(IT修真院test8)詳解1-1

來源:互聯網
上載者:User

標籤:分享   tom   企業網站   屬性   next   footer   自適應高度   eric   was   

這任務需求我們使用推特的前端架構bootstrap來實現。先放psd圖。

上傳這些圖片也蠻大的。為此我使用office picture manager壓縮了圖片。

方法:alt+p+o,然後tab+下方按鈕選中用於網頁,點擊儲存就ok

 

一。還原含有“50萬年薪”的psd靜態頁面

先思考:

發現1.三張psd圖的頭部尾部的設定是一樣的,可以抽離出來,弄成

g-header,g-content,g-footer

這命名符合我另外一篇文章:css樣式書寫規範+特殊符號http://www.cnblogs.com/hewasdrunk/p/7168862.html,有興趣的可以翻看。

發現2.content中第一個頁面模組是個輪播圖,可以通過bootstrap輪播圖外掛程式實現。

發現3.content裡2~6模組都是一行均分幾個子集,可以通過bootstrap柵格系統實現。

好的,宏觀思考ok,那麼問題來了。

問題1.怎麼實現footer“永遠沉底”?

方法1:使用css3的flex布局

核心代碼如下:

html{    height:100%;    /*將html 和 body 元素的高度設定為100%,使其充滿整個螢幕。*/    /*這裡還要說明一下:html下的body一般會有或多或少的margin,body的高度不是100%的。*/}body{    display:flex;    flex-direction:column;    height:100%;    /*將html 和 body 元素的高度設定為100%,使其充滿整個螢幕。這裡body:height:100%是繼承html的高度*/    /*將 body 的 display 屬性設定為 flex, 然後將方向屬性設定為列,*/}/*我們希望 header 和footer 只佔用他們應該佔用的空間,將剩餘的空間全部交給主體內容地區*/.g-header{    flex:0 0 auto;}.g-content{    flex: 1 0 auto;    /*將 flex-grow 設定為1,該元素會佔用全部可使用空間*/    /*而其他元素該屬性值為0,因此不會得到多餘的空間*/    /* 1 flex-grow, 0 flex-shrink, auto flex-basis */}.g-footer{    flex: 0 0 auto;}

方法二:使用postion定位

.g-footer-f{    position: fixed;bottom:0;    width:100%;    min-height: 5rem;/*此方法通過position固定在瀏覽器下方,但是以一種浮動在上層的效果出現的。*//*所以上一個緊挨的並列盒子,即g-content盒子的內容就會有一部分顯示不全。被遮擋了。*/ /*而這種特性也被用於實現footer底層樣式透明,footer裡的按鈕不透明。*//*而實現內容不遮擋,只要在g-content的底部新增一個含高度的空div就完成。*/}<div class="g-content">    <div class="pull-height"></div></div><div class="g-footer-f">    <div class="footer-bg"></div>     <a href="test7-3.html"><button class="nav-fl bgfb">再來一局</button></a>    <a href=""><button class="nav-fr bgf6">上傳分享</button></a></div>.footer-bg{    height:5rem;    /*只要再給一個層,然後給個跟父盒子一樣高的高度就可以實現底層透明,上層不透明*/    background:#29BDE0;    filter:alpha(Opacity=50);-moz-Opacity:0.5;opacity:0.5;    /*filter:alpha(Opacity=50);-moz-Opacity:0.5;opacity:0.5;實現透明效果*/}.pull-height{    height:5rem;}

問題2.怎麼實現bootstrap輪播圖”?

我是直接在webstrom上建立bootstrap項目的。我還發現一個問題:就是本地引入bootstrap架構的代碼實現不了功能。

最後我還是決定使用外部連結

<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.2/css/bootstrap.min.css">放</head>標籤裡頭而兩外兩段scritp不能亂順序,放在</html>標籤後<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>之所以放在末尾是防止這兩段代碼影響html初始載入的格局

好了,載入完架構後,輪播外掛程式的代碼格式比較定式的,記住就好。

代碼如下:

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">    <!--底部導航點。。。-->    <ol class="carousel-indicators">        <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>        <li data-target="#carousel-example-generic" data-slide-to="1"></li>        <li data-target="#carousel-example-generic" data-slide-to="2"></li>    </ol>    <!--輪播廣告內容-->    <div class="carousel-inner" role="listbox">        <div class="item active">            <img src="img/test8-1/Image1.png">        </div>        <div class="item">            <img src="img/test8-1/Image2.png">        </div>        <div class="item">            <img src="img/test8-1/Image3.png">        </div>    </div>    <!--左右箭頭-->    <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">        <span class="glyphicon glyphicon-chevron-left"></span>        <pan class="sr-only">previous</span>    </a>    <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">        <span class="glyphicon glyphicon-chevron-right"></span>        <pan class="sr-only">Next</span>    </a>

但是我們不單單滿足這個實現,第一張圖的文字我們不通過ps_cc來實現。那麼怎麼通過html+css來實現呢?

我首先想到的是“圖層postion定位”

關鍵代碼:

.s-pos-center{    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%,-50%);}css作用於文字<span>盒子裡,兩個特點:1.不必知道“寬高度”。2.它是一種圖層的形式覆蓋在父盒子上,且無視兄弟姐妹盒子。

同時也順便複習其他的水平垂直置中方法,並作比較

第一種,通過text-align + line-height實現inline和inline-block元素的水平垂直置中(牛奶和果凍)

<style>        .s-lineheight-center{            text-align:center;            line-height:300px;        }        .test{            width:300px;            height:300px;        }        .test{            background:#5fc0cd;        }        .t-color-damage{            background:pink;        }    </style></head><body><div class="test s-lineheight-center"><span class="t-color-damage">元素</span>    <img src="img/test8-1/pic.png">    <p>block元素</p></div>

結果顯示css是作用於父盒子裡,通過父盒子操作子項目水平垂直置中。

特點:

1.必須知道高度的準確數值,讓盒子高度等於行框高度,實際上是元素底線重疊在父盒子的中線上。它是以犧牲上下行框,即犧牲父盒子的上下padding來實現的。所以img圖片也沒有實現置中效果。

2。裡面要置中的子項目會彼此擠壓,共同佔據中間位置。3.不適合塊元素。圖中p標籤脫離了test父盒子。

3.文字的中線重疊父盒子中線,img只是底線重疊父盒子中線。

所以一般是用於父盒子只有一行文字元素的的子項目垂直置中。

 

第二種,通過display:table-cell+text-align +vertical-align:middle實現三類元素的水平垂直置中(牛奶,果凍,堅果)

<style>        .s-lineheight-center{            display:table-cell;            text-align:center;            vertical-align: middle;        }        .test{            width:200px;            height:400px;        }        .test{            background:#5fc0cd;        }        .t-color-damage{            background:pink;        }    </style></head><body><div class="test s-lineheight-center">    <span class="t-color-damage">元素</span>    <img src="img/test8-1/pic.png">    <p>block元素</p>    <span>inlink</span></div>

這種方法也是作用於父盒子div,通過三個css規範子項目位置。

特點:

1。高度調小時,子項目自適應高度,而且它本身有一個最小高度存在。同時父盒子的塊元素雖然會換行,但是不會離開父盒子。(感覺寬高影響不大,不知道要不要高度。暫時是元素的內容寬高)

2。關於img置中的問題:(1。單獨img時,可以實現水平垂直置中。2。img+快元素如p為子項目時,會以他們兩的高的中線疊加在父盒子div的中線上。所以一般的書本+書名可以用這種方法實現。3。img+行內元素為子項目時,會以他們兩的寬度的中線水平在父盒子div的中線上。行內元素的底線重疊img底線。效果就是文字位於img左下角或右下角。

 

第三種,通過display:flex+jc+ai 實現三類元素的水平垂直置中(牛奶,果凍,堅果)


<title>水平置中</title>
<style>
.s-lineheight-center{
display:flex;
justify-content: center;
align-items: center;
}
.test{
width:200px;
height:400px;
}
.test{
background:#5fc0cd;
}
.t-color-danger{
background:pink;
}
.t-height-primary{
height:100px;
}

</style>
</head>
<body>
<div class="test s-lineheight-center">
<span class="t-color-danger">元素</span>
<img src="img/test8-1/pic.png">
<p class="t-height-primary">block元素</p>
<span>inlink</span>
</div>

 

 

這種方法也是作用於父盒子div,通過三個css規範子項目位置。

特點:1.如果不指定寬高,寬度會以100%body展現。高度為內容高。

2.block元素不再獨佔一行。而是於以inline-block的身份存在。

3.當寬度指定數值過小時,每個元素會以字串的形式自動換行。同時子項目會超出父盒子。

4.子項目兄弟們的總寬度的中線會重疊父盒子的中線。文字的中線和圖片的中線重疊,也重疊父盒子中線。

 

今天就總結那麼多。

 

pc端的企業網站(IT修真院test8)詳解1-1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.