sass初体验-一个简单版rem布局的H5页面

刚入前端时间不久,样式除了css写的最多的就是less,对sass这门css预处理语言还比较陌生,前段时间正好接受了公司的一个h5活动小项目,其实活动模板已经有了,跟后端交互的逻辑跟之前的一样,不同就是页面的皮肤和一些css样式。虽然只是非常简单的活,但是第一次接触sass,并且是用sass写的移动端rem布局,对sass对移动端rem布局也算是有点收获。一直以来移动端的布局方案就很多很多,作为一名新手,套用框架可以玩的溜,但是离开那些移动端ui框架就显得很吃力了,并且网上流传的方案五花八门,很多时候看了几遍貌似有些懂了,过了一阵子还是一头雾水。究其原因,还是由于缺乏实战的考验。 这里做了一个用sass写的H5demo页面,并没有考虑那些复杂的因素,比如dpr,一像素边距问题,可能更适合在移动端样式方面跟我一样菜或者更菜的新手参考,前端老司机不用看了,个人觉得基础差的同学从简单入手是一个更恰当的方法,对于移动端的样式问题,新手一上来就纠结在那些dpr,一像素边距等问题很可能会一头雾水,先做到了解有那些概念即可,等经过一些实践再回过头来看可能跟容易明白那些概念。

这个demo通过js控制了小屏下对html的font-size进行动态控制,在ipone 6/7/8等屏幕下 1rem=16px,在其他手机屏幕下等比例变化,在sass中写了一个转化函数rem(),相当于px转rem的函数,在后面的样式中会不断用到这个函数,我们只需填入实际想要的px单位值即可,比如以iphone 7 为基准,想让页面头部的高度为50px,那么写height:rem(50)即可。

html代码

 


    
    
    
    Document
<script src="demo1.js"></script>
<link rel="stylesheet" href="demo1.css">
复制代码
搜索
上海人民广场
用户
<main class="content">
    <div class="title"><h4>附近商家</h4></div>
    <ul class="merchant-list">
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/4/58/7967c10b9373bdb8bd684506609f4png.png" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/6/12/1bf0b22271fa3aa63b2c420efe961jpeg.jpeg" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/4/58/7967c10b9373bdb8bd684506609f4png.png" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/6/12/1bf0b22271fa3aa63b2c420efe961jpeg.jpeg" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/4/58/7967c10b9373bdb8bd684506609f4png.png" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
            <a href="javascript:;" class="left">
                <img src="https://fuss10.elemecdn.com/6/12/1bf0b22271fa3aa63b2c420efe961jpeg.jpeg" alt="">
            </a>
            <div class="right">
                <h4>焖饭大师(人民广场店)</h4>
                <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                <p class="other">¥15元起送/配送费2.5</p>
            </div>
            <div class="distance">742m/<span class="time">25分钟</span></div>
        </li>
        <li class="merchant-item">
                <a href="javascript:;" class="left">
                    <img src="https://fuss10.elemecdn.com/4/58/7967c10b9373bdb8bd684506609f4png.png" alt="">
                </a>
                <div class="right">
                    <h4>焖饭大师(人民广场店)</h4>
                    <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                    <p class="other">¥15元起送/配送费2.5</p>
                </div>
                <div class="distance">742m/<span class="time">25分钟</span></div>
            </li>
            <li class="merchant-item">
                <a href="javascript:;" class="left">
                    <img src="https://fuss10.elemecdn.com/6/12/1bf0b22271fa3aa63b2c420efe961jpeg.jpeg" alt="">
                </a>
                <div class="right">
                    <h4>焖饭大师(人民广场店)</h4>
                    <p class="info"><span class="star">★★★★★</span><span class="score">5.0</span><span class="total">月售2745单</span></p>
                    <p class="other">¥15元起送/配送费2.5</p>
                </div>
                <div class="distance">742m/<span class="time">25分钟</span></div>
            </li>
    </ul>
</main>

<footer class="footbar">
    <ul>
        <li>外卖</li>
        <li>搜索</li>
        <li>订单</li>
        <li>我的</li>
    </ul>
</footer>
复制代码

sass代码

 @function rem($px){
    @return ($px/16)*1rem
}
a{
    text-decoration: none;
}
img{
    max-width: 100%;
}
ul,li{
    list-style: none;
}
*{
    margin: 0;
    padding:0;
}
html,body{
    position: relative;
    height: 100%;
    box-sizing: border-box;
}
*, *:before, *:after {
    box-sizing: inherit;
  }

//   头部
.tophead{
    width: 100%;
    height: rem(54);
    padding: 0 rem(20);
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: rgb(59, 122, 216);
    color: #fff;
    position: fixed;
    top: 0;
    z-index: 9999;
    a{
        color: #fff;
        font-size: rem(16); 
    }
}

//中间内容
.content{
   height: 100%;
   width: 100%;
   padding: rem(54) rem(14);
   overflow-y: scroll;
   .title{
       height: rem(30);
       margin-top: rem(10);
       h4{
           height: 100%;
           line-height: rem(30);
           color: #666;
           font-weight: normal;
           font-size: rem(16);
       }
   }
   .merchant-list{
       .merchant-item{
           position: relative;
           border-bottom: rem(1.6) solid #efefef;
           padding: rem(14) 0;
           &:last-child{
            border-bottom:none;
           }
           .left{
               position: absolute;
               left: 0;
               top: rem(14);
               width: rem(80);
               img{
                   vertical-align: bottom;
               }
           }
           .right{
               margin-left: rem(80);
               padding-left: rem(16);
               font-size: rem(14);               
               h4{
                   height: rem(30);
                   line-height: rem(30);
                   color: #333;
                   font-size: rem(16);
               }
               .info{
                   margin-bottom: rem(14);
               }
               .star{
                   color: #e9b035;
               }
               .score{
                   color: #f55207;
               }
               .total{
                   color: #464242;
               }
               .other{
                   color: #747064;
               }
               
               span{
                   margin-right: rem(6)
               }
           }
           .distance{
               position: absolute;
               right: rem(0);
               bottom: rem(14);
               font-size: rem(14);
               color: #746e6e;
               .time{
                color: #6898f1;
            }
           }
       }
   }
}

// 底部
.footbar{
   position: fixed;
   bottom: 0;
   width: 100%;
   background: #fefefe;
   height: rem(54);
   border-top: rem(1) solid #eaeaea;
   z-index: 9999;
   li{
       width: 24%;
       display: inline-block;
       height: rem(60);
       line-height: rem(60);
       text-align: center;
       font-size: rem(14);
   }
}

js代码(引入jquery)

if(typeof($)!=='undefined'){
    console.log(753)
    $.extend({
        setRemValue:function(windowSize){
            
            if($(window).width()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值