1. 程式人生 > >pc端的企業網站(IT修真院test8)詳解1-1

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

tom eight auto scrip 插件 html 樣式 繼承 代碼實現

這任務需求我們使用推特的前端框架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