• 响应式布局---4. 案例:阿里百秀(中屏幕及以上)


    1 技术选型

    方案:我们采取响应式页面开发方案
    技术:bootstrap框架
    设计图:本设计图采用1280px设计尺寸

    2 页面布局分析

    • 屏幕缩放发现大屏幕和中屏幕布局一致,因此列定义为col-md-即可。
    • 屏幕缩放发现小屏幕布局发生变化,因此需要为小屏幕根据需求改变布局。
    • 屏幕缩放发现超小屏幕布局发生变化,因此需要为超小屏幕根据需求改变布局。
    • 策略:我们先布局md以上的pc端布局,最后更加需求再修改小屏幕和超小屏幕布局。

    3 页面制作

    Bootstrap使用4步曲:

    3.1 创建文件夹结构

    • 一级:alibaixiu
    • 二级:alibaixiu(css /images /upload /bootstrap /index.html)
    • 三级:css(index.css); bootstrap(css /fonts / js)

    3.1 创建html骨架结构和引入相关样式文件

    <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">
        <!--[if lt IE 9]>
            解决ie9以下浏览器对html5新增标签不识别,并导致css不起作用的问题 这里采用的线上的形式,也可以下载下来采用线下的形式
            <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
            解决ie9以下浏览器对css3 Media Query 的不识别问题
            <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
        <!-- 一定不要忘记引入bootstrap的样式文件 -->
        <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
        <!-- 引入首页的css文件 -->
        <link rel="stylesheet" href="css/index.css">
        <title>Document</title>
    </head>
    

    3.2 书写内容

    3.2.0 公共样式

    3.2.1 修改container宽度

    本设计图采用的是1280px设计,而bootstrap里面的container宽度最大为1170px,因此需要手动修改下container宽度,于是在index.css中写入:

    /* 修改container的最大宽度为 1280px */
    
    @media screen and (min- 1280px) {
        /* 其他的屏幕宽度还是根据bootstrap自己默认的样式 划分  */
        .container {
             1280px;
        }
    }
    

    3.2.2 整体结构搭建

    <body>
        <div class="container">
            <!-- container默认两边有padding值,而row可以消除containtainer两边的padding值 即row里面的内容可以占据container的padding部分-->
            <div class="row">
                <!-- header -->
                <header class="col-md-2">左侧</header>
                <!-- article -->
                <article class="col-md-7">中间</article>
                <!-- aside -->
                <aside class="col-md-3">右侧</aside>
            </div>
        </div>
    </body>
    

    3.2.3 左侧部分

    <!-- header -->
    <header class="col-md-2">
        <!-- 每个列col也有一个默认的左右padding值导致里面的内容无法贴合该盒子 所以先手动修改左边的padding值 右边的先不改-->
        <!-- 注意:修改的时候不要用col-md-2这个类名,这个类名不可动 应该利用header标签 同时注意提权  可以在审查元素里面查看-->
        <div class="logo">
            <a href="#">
                <img src="images/logo.png" alt="">
            </a>
        </div>
        <div class="nav">
            <ul>
                <!-- bootstrap的官网的组件中找到照相机字体图标对应的类名(glyphicon glyphicon-camera)引入即可 -->
                <!-- 字体图标的实现原理可以在检查元素中查看:a里面有一个before(bootstrap已经内部设定好的) 只要给a添加这个样式,就会给a生成一个before的伪元素 即在伪元素里将这个字体图标设定好了-->
                <li><a href="#" class="glyphicon glyphicon-camera">生活馆</a></li>
                <li><a href="#" class="glyphicon glyphicon-picture">自然汇</a></li>
                <li><a href="#" class="glyphicon glyphicon-phone">科技湖</a></li>
                <li><a href="#" class="glyphicon glyphicon-gift">奇趣事</a></li>
                <li><a href="#" class="glyphicon glyphicon-glass">美食节</a></li>
            </ul>
        </div>
    </header>
    
    /* header */
    header {
        padding-left: 0!important;
    }
    
    .logo {
        /* 由于插入的logo.png是透明的,所以需要为其添加背景颜色 */
        background-color: #429ad9;
    }
    
    .logo img {
        /* 保证图片等比例缩放 */
         100%;
    }
    
    .nav {
        background-color: #eee;
        border-bottom: 1px solid #ccc;
    }
    
    .nav a {
        display: block;
        height: 50px;
        line-height: 50px;
        padding-left: 30px;
        font-size: 16px;
    }
    
    .nav a:hover {
        background-color: #fff;
        color: #333;
    }
    
    .nav a::before {
        /* 在before中修改字体图标位置 */
        vertical-align: middle;
        padding-right: 5px;
    }
    

    3.2.4 中间部分

    <!-- article -->
    <article class="col-md-7">
        <!-- 新闻 -->
        <div class="news"></div>
        <!-- 发表 -->
        <div class="publish"></div>
    </article>
    
    新闻模块

    做响应式不必太关心高度,把高度写定,不必担心屏幕缩放时高度满足不了自适应,因为屏幕变化时布局模式会改变。 主要关心宽度,让宽度满足自适应。

    <!-- 新闻 -->
    <div class="news clearfix">
        <!-- bootstrap已经定义好了清除浮动 -->
        <ul>
            <!-- 注意第一个li和其他几个li样式的不同 -->
            <li>
                <a href="#">
                    <img src="upload/lg.png" alt="">
                    <p>阿里百秀</p>
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="upload/1.jpg" alt="">
                    <p>奇了 程度一小区护士长得像马云 市民纷纷求合影</p>
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="upload/2.jpg" alt="">
                    <p>奇了 程度一小区护士长得像马云 市民纷纷求合影</p>
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="upload/3.jpg" alt="">
                    <p>奇了 程度一小区护士长得像马云 市民纷纷求合影</p>
                </a>
            </li>
            <li>
                <a href="#">
                    <img src="upload/4.jpg" alt="">
                    <p>奇了 程度一小区护士长得像马云 市民纷纷求合影</p>
                </a>
            </li>
        </ul>
    </div>
    
    /* 新闻 */
    .news li {
         25%;
        float: left;
        height: 128px;
        /* 提前采用了C3盒子模型 为了使图片之间留有空隙,且又不会出现盒子被记下来的情况 (千万不可以用margin,否则会有li被挤掉下来)*/
        padding-right: 10px;
        margin-bottom: 10px;
    }
    
    .news li:nth-child(1) {
         50%;
        height: 266px;
    }
    
    .news li a {
        position: relative;
        display: block;
         100%;
        height: 100%;
    }
    
    .news li a img {
        height: 100%;
         100%;
    }
    
    .news li a p {
        position: absolute;
        bottom: 0;
        left: 0;
         100%;
        height: 41px;
        padding: 5px 10px;
        /* 去除bootstrap中p默认的下外边距 */
        margin-bottom: 0;
        background-color: rgba(0, 0, 0, .5);
        font-size: 12px;
        color: #fff;
    }
    
    .news li:nth-child(1) p {
        /* 第一个li里面的p */
        padding: 0 10px;
        line-height: 41px;
        font-size: 20px;
    }
    
    发表模块

    bootstrap中如果需要某个像素(本例需要24px)的标题,可以打开booststrap网站-->css--->排版:发现24px的标题对应的是h3,所以可以直接用j3进行处理。
    修改文字颜色(本例需要灰色):可以打开booststrap网站-->css--->辅助类--->情境文本颜色:复制灰色对应的类名class="text-muted",并应用就可以了。

    <!-- 发表 -->
    <div class="publish">
        <!-- 该模块小屏幕以上结构都不变 -->
        <div class="row">
            <div class="col-sm-9">
                <!-- 24px的标题 -->
                <h3>生活馆 关于指甲的10个健康知识 你知道几个</h3>
                <!-- 将p的类容变成灰色 class="text-muted"-->
                <p class="text-muted">alibaixiu 发布于 2015-11-23</p>
                <p>指甲是经常容易被人们忽略的身体部位, 事实上从指甲的健康状况可以看出一个人的身体健康状况, 快来看看10个暗藏在指甲里知识吧!</p>
                <p class="text-muted">阅读(2417)评论(1)赞 (18) 标签:健康 / 感染 / 指甲 / 疾病 / 皮肤 / 营养 / 趣味生活</p>
            </div>
            <div class="col-sm-3 pic">
                <img src="upload/3.jpg" alt="">
            </div>
        </div>
    </div>
    
    /* 发表 */
    .publish {
        border-top: 1px solid #ccc;
    }
    
    .publish .row {
        border-bottom: 1px solid #ccc;
    }
    
    .pic {
        margin-top: 10px;
    }
    
    .pic img {
         100%;
    }
    

    3.2.5 左侧部分

    <!-- aside -->
    <aside class="col-md-3">
        <a href="#" class="banner">
            <img src="upload/zgboke.jpg" alt="">
        </a>
        <a href="#" class="hot">
            <!-- btn btn-primary是按钮样式 -->
            <span class="btn btn-primary">热搜</span>
            <!-- text-primary是颜色样式(辅助类) -->
            <h4 class="text-primary">欢迎加入中国播客联盟</h4>
            <!-- text-primary是颜色样式(辅助类) -->
            <p class="text-muted">这里收录国内各个领域的优秀博客,是一个全人工编辑的开放式博客联盟交流和展示平台......</p>
        </a>
    </aside>
    
    /* 左侧部分 */
    .banner img {
         100%;
    }
    
    .hot {
        display: block;
        padding: 0 20px 20px;
        margin-top: 20px;
        border: 1px solid #ccc;
    }
    
    .hot span {
        /* 修改bootstrap预先定义的按钮类btn btn-primary */
        border-radius: 0;
        margin-bottom: 20px;
    }
    
    .hot p {
        font-size: 12px;
    }
    

    到此中等屏幕以上布局完成了。

    下次看第24节

  • 相关阅读:
    Design Pattern Explained
    StringBuilder or StringBuffer
    Algorithms
    Difference between pages and blocks
    Date Time Calendar
    Math if fun
    Sublime Text
    Java Regex
    Learning C
    跨域通信/跨域上传浅析
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12162024.html
Copyright © 2020-2023  润新知