前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MUI导航栏透明渐变----原生JS实现

MUI导航栏透明渐变----原生JS实现

作者头像
Rattenking
发布2021-01-29 16:09:51
发布2021-01-29 16:09:51
5.6K00
代码可运行
举报
文章被收录于专栏:RattenkingRattenking
运行总次数:0
代码可运行

首先声明:由于backgroundColor的值采用的是RGBA,IE8及以下不支持,所以此效果不支持IE8及以下的浏览器

此效果采用的RGBA做的透明渐变,所以CSS样式中的backgroundColor的值必须是RGBA

css代码

代码语言:javascript
代码运行次数:0
运行
复制
body,p,h1{margin: 0;}
.module-layer{
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100000;
}
.module-layer-content{
    position: relative;
    min-width: 320px;
    max-width: 750px;
    width: 100%;
    margin: 0 auto;
    background-color: rgba(255, 0, 0, 0.9);
}
.module-layer-bg{
    width: 100%;
    height: 100%;
    background: #000;
    opacity: .7;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;
}
.layer-head-name{
    height: 50px;
    line-height: 50px;
    text-align: center;
    padding: 0 50px;
    font-size: 20px;
}
.layer-return,.layer-share{
    width: 50px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    position: absolute;
    top:0;
    z-index: 1;
}
.layer-return{left: 0;}
.layer-share{right: 0;}
.fixed-layer{
    height: 100%;
    display: none;
    z-index: 100001;
}
.relative-layer{height: 100%;}
.layer-content{
    padding:3%;
    position: relative;
    top: 20%;
}
.layer-close{
    width: 2rem;
    height: 2rem;
    position: absolute;
    top:3%;
    right: 3%;
}
.pr {
    position:relative;
}
#shop-input::-webkit-input-placeholder {
    color:#fff;
}
#shop-input:-moz-placeholder {
    color:#fff;
}
#shop-input::-moz-placeholder {
    color:#fff;
}
#shop-input:-ms-input-placeholder {
    color:#fff;
}
#shop-input {
    border:none;
    outline:none;
    background:transparent;
}
.search-box {
    height:30px;
    border-radius:20px;
    top:10px;
    overflow:hidden;
    z-index:10;
}
.search-box:after {
    content:'';
    display:block;
    width:100%;
    height:30px;
    background:#fff;
    opacity:.5;
    position:absolute;
    top:0;
    left:0px;
    z-index:-1;
}
#shop-input {
    height:28px;
    line-height:28px;
    font-size:16px;
    position:absolute;
    top:0;
    left:30px;
}
.shop-search {
    width:16px;
    height:16px;
    position:absolute;
    top:7px;
    left:6px;
}
.layer-return{
    background: url(images/return.png) no-repeat center center/12px 20px;
}
.layer-share{
    background: url(images/share.png) no-repeat center center/20px 30px;
}
a {
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
}
.module-content{
    min-width: 320px;
    max-width: 750px;
    width: 100%;
    margin: 0 auto;
    background: #fff;
}
.module-content div:first-child img{margin-top: 0;}
.module-content div img{
    display: block;
    width: 100%;
    margin-top: 10px;
}

HTML代码

代码语言:javascript
代码运行次数:0
运行
复制
<header class="module-layer">
    <div class="module-layer-content">
        <p class="layer-return"></p>
        <h1 class="layer-head-name">
            <div class="pr search-box">
                <img class="shop-search" src="images/search.png"/>
                <input id="shop-input" type="text" placeholder="搜索店内商品" value="" />
            </div>
        </h1>
        <p class="layer-share"></p>
    </div>
</header>
<div class="module-content">
    <div><img src="images/banner.png"/></div> 
    <div><img src="images/banner1.png"/></div> 
    <div><img src="images/banner3.png"/></div>
    <div><img src="images/banner4.jpg"/></div>
    <div><img src="images/banner5.png"/></div>
    <div><img src="images/banner6.png"/></div>
    <div><img src="images/banner7.jpg"/></div>
    <div><img src="images/banner8.jpg"/></div>
</div>

JS代码

代码语言:javascript
代码运行次数:0
运行
复制
(function(){
    //获取滚动条当前位置
    function getScrollTop(){  
      var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;  
      if(document.body){  
        bodyScrollTop = document.body.scrollTop; 
      }  
      if(document.documentElement){  
        documentScrollTop = document.documentElement.scrollTop; 
      }  
      scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;  
      return scrollTop;  
    }
    //获取CSS样式
    function getStyle(element, attr){
        if(element.currentStyle){
            return element.currentStyle[attr];
        }else{
            return window.getComputedStyle(element,null)[attr];
        }
    }
    //获取原始backgroundColor值
    var color = getStyle(document.getElementsByClassName('module-layer-content')[0],'backgroundColor');
    //取到RGB
    var colorRgb = color.substring(0,color.lastIndexOf(',') + 1);
    //取到A
    var colorA = color.substring(color.lastIndexOf(',') + 1,color.length - 1);
    //对A判断,如果最终值小于0.9,直接设置为1
    if(colorA < 0.9){colorA = 1;}
    //设置背景色的A的函数
    var setCoverOpacity = function() {
        document.getElementsByClassName('module-layer-content')[0].style.background = colorRgb + (((getScrollTop() / 550) > colorA) ? colorA : (getScrollTop() / 550)) + ')';
    }
    //初始化函数
    setCoverOpacity();
    //绑定滚动监听事件
    window.addEventListener('scroll',setCoverOpacity,false);
}())

注意:

  1. 不兼容IE8及以下的IE浏览器;
  2. 550是滚动条到达位置的最终透明度,此处根据需要自定义;
  3. CSS终背景颜色的RGBA的A是最终透明度

demo效果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先声明:由于backgroundColor的值采用的是RGBA,IE8及以下不支持,所以此效果不支持IE8及以下的浏览器
  • 此效果采用的RGBA做的透明渐变,所以CSS样式中的backgroundColor的值必须是RGBA
  • css代码
  • HTML代码
  • JS代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档