天天看點

響應式布局案例實戰響應式布局案例實戰

響應式布局案例實戰

前幾天做了一個響應式布局的案例,這裡和大家分享一下,主要是總結一些經驗。

1.html代碼

<body>
    <!-- 頭部 -->
    <header id="header">
        <div class="logo">
                <img src="images/largelogo.jpg" alt="logo" class="large">
                <img src="images/middlelogo.jpg" alt="logo" class="middle">
                <img src="images/smalllogo.jpg" alt="logo" class="small">
        </div>
        <div class="search">
            <input type="search" name="kw" placeholder="請輸入搜尋内容">
            <button>搜尋</button>
        </div>
        <div class="nav">
            <button id="btn">
                <span></span>
                <span></span>
                <span></span>
            </button>
            <ul>
                <li><a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >首頁</a></li>
                <li><a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >課程</a></li>
                <li><a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >公告</a></li>
                <li><a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >登入</a></li>
            </ul>
        </div>
    </header>
    <!--橫幅 -->
    <div id="banner">
        <img src="images/banner.jpeg" alt="banner">
    </div>
    <!-- 主體内容 -->
    <div id="main">
        <div class="row">
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main1.jpeg">
                </a>
                <p>HTML5</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main2.jpg">
                </a>
                <p>CSS3</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main3.jpeg">
                </a>
                <p>LESS</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main4.jpg">
                </a>
                <p>BootStrap</p>
            </div>
        </div>
        <div class="row">
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main1.jpeg">
                </a>
                <p>HTML5</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main2.jpg">
                </a>
                <p>CSS3</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main3.jpeg">
                </a>
                <p>LESS</p>
            </div>
            <div class="col">
                <a href="javascript:" target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow"  target="_blank" rel="external nofollow" >
                    <img src="images/main4.jpg">
                </a>
                <p>BootStrap</p>
            </div>
        </div>
    </div>
    <!-- 頁尾 -->
    <footer id="footer">
    </footer>

</body>
           

2.css代碼

<style>
        /* 初始化 */
        body {
            font-family: Arial;
            font-size: 14px;
            margin: 0;
            padding: 0;
            border: 0;
        }
        ul{
            list-style: none;
        }
        a{
            text-decoration: none;
        }
        .clearfix:after{
            content: '';
            display: block;
            clear: both;
        }
        body {
            background: #efefef;
        }

       /* 頭部 */
        #header{
            height: 40px;
            padding: 8px 0 15px 0;
            background: #88c5e1;
            border-bottom:5px solid #54abd4;
            position: relative;
        }
        /* 頭部logo */
        #header .logo {
            width: 25%;
            text-align: center;
            font-size: 0;
            float: left;
        }
        #header .logo img{
            height: 40px;
            display: none;
        }
        #header .logo img.large{
            display: inline-block;
        }
        @media (max-width: 1024px){
            #header .logo img.large{
                display: none;
            }
            #header .logo img.middle{
                display: inline-block;
            }
            #header .logo img.small{
                display: none;
            }
        }
        @media (max-width: 640px){
            #header .logo img.large{
                display: none;
            }
            #header .logo img.middle{
                display: none;
            }
            #header .logo img.small{
                display: inline-block;
            }
        }
        /* 頭部搜尋框 */
        #header .search {
            width: 50%;
            float: left;
        }
        @media (max-width: 640px){
            #header .search{
                width: 60%;
            }
        }
        #header .search input{
            width: 80%;
            height: 40px;
            box-sizing: border-box;
            padding: 0 10px;
            float: left;
            border: 1px solid #ccc;
            border-radius: 10px 0 0 10px;
        }
        #header .search button{
            width: 20%;
            height: 40px;
            box-sizing: border-box;
            float:right;
            border: 1px solid #ccc;
            border-radius: 0 10px 10px 0;
        }
        /* 頭部導航 */
        #header .nav {
            width: 25%;
            float: left;
        }
        #header .nav button{
            display: none;
        }
        #header .nav button span{
            display: none;
        }
        #header .nav li{
            width: 25%;
            float: left;
            height: 40px;
            text-align: center;
            font-size: 12px;
        }
        #header .nav li a{
            display: block;
            height: 40px;
            color:#fff;
        }
        #header .nav li a:hover{
            color:#888;
        }
        @media (max-width: 640px) {
            #header .nav{
                width: 15%;
            }
            #header .nav ul{
                position: absolute;
                top: 54px;
                left: 0;
                width: 100%;
                background: #88c5e1;
                height: 0;
                overflow: hidden;
                transition: .5s;
            }
            #header .nav ul.open{
                height: 160px;
            }
            #header .nav li{
                float: none;
                text-align: center;
                line-height: 40px;
                width: 79%;
                margin-top: 2px;
            }
            #header .nav button{
                display: block;
                padding: 9px 10px;
                border: 1px solid #ccc;
                border-radius: 4px;
                margin: 2px auto;
                background: transparent;
            }
            #header .nav button span{
                display: block;
                width: 22px;
                height: 2px;
                background: #888;
                margin-bottom: 5px;
            }
            #header .nav button span:last-child{
                margin-bottom: 0;
            }
        }
        /* banner */
        #banner img{
            width: 100%;
            height: 400px;
        }
        /* 主體内容 */
        #main{
            width: 1000px;
            margin: 10px auto;
        }
        #main .col{
            float: left;
            width: 25%;
            box-sizing: border-box;
            padding: 10px;
        }
        #main .col a{
            display: block;
        }
        #main .col p{
            padding:10px 0;
            text-align: center;
            font-size: 16px;
            font-weight: 700;
            background: #fff;
            margin-top: 0;
            box-sizing: border-box;
        }
        #main .col img{
            display: block;
            width: 100%;
            height: 300px;
        }
        @media (max-width: 1024px){
            #main .col{
                width: 50%;
            }
            #main{
                width: 100%;
            }
        }
        @media (max-width: 640px){
            #main .col{
                width: 100%;
            }
        }
        /* 頁尾 */
        #footer{
            clear: both;
            height: 400px;
        }      
    </style>   
           

js代碼

<script>
    (function(){
        var btn = document.querySelector("#btn");
        var navlist = document.querySelector(".nav ul")
        btn.onclick=function(){
            navlist.classList.toggle("open");
        }
    })();
</script>
           

3.效果圖

  • 螢幕大于1024px

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-zbbQYlwM-1596423510523)(https://s1.ax1x.com/2020/08/03/aNjgSK.png)]

  • 螢幕大于640px,小于1024px logo變了,主體内容變為兩列

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-FOOQw7S0-1596423510529)(https://s1.ax1x.com/2020/08/03/aNvhcT.png)]

  • 螢幕小于640px logo變了,出現導航按鈕,點選出現下拉清單,主體内容變為一列

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-sFG9Eilc-1596423510534)(https://s1.ax1x.com/2020/08/03/aUScAH.png)]

4.總結

  • 那個導航按鈕我為圖友善,我用的是span,其實可以用字型圖示(css精靈圖),用的所有插圖都是網上随便找的,尺寸不是很合适,特别是banner那張圖,已經變形啦,但無傷大雅,主要是拿來練手,大家想好看,可以先在ps上處理下。
  • 頭部和主體内容都是用浮動做的,其實可以用flex布局,主要是考慮到float的相容性更好,在加上我們用的是pc優先,本來就是考慮其相容性比移動優先要好,是以幹脆讓其好上加好。
  • 那個下拉菜單是用定位做的,注意transition屬性不能與display一起使用,我們想隐藏某個div,也可以将其高度設為0,相當于display:none;但此時應該會使文本内容溢出,是以還要設定overflow:hidden;想要顯示時不能直接height:auto;要寫死一個固定高度,這樣才能實作一個過渡的動畫效果。按鈕可以看到是透明的,主要用來一個background:transparent;其實不設定背景的時候預設就是這個。
  • 中間用了一點js,主要是控制導航按鈕,單擊按鈕會出現下拉清單。巧妙地在ul後面加上了一個open類,是以我們隻要控制有無open類,就可以控制其顯示或隐藏,是以綁定按鈕。js用的自調用函數,也可以Windows.onload(太老啦)。toggle方法正好滿足我們的需求。
  • 主體内容我沒有用margin來調每列盒子之間的距離,而是用的padding,圖檔外的盒子設定一個padding,不加邊框,不加背景,在設定一個box-sizing:border-box;效果其實和用margin一樣,主要是這樣避免了最後還要将最後一個margin給去掉。
  • 這隻是一個很簡單的響應式布局的案例,初學者可以拿來練練手,會對響應式布局有更深的了解。

繼續閱讀