pc端的企業網站(IT修真院test8)詳解1-1
這任務需求我們使用推特的前端框架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