Maison >interface Web >js tutoriel >JS implémente l'effet de dégradé transparent de la barre de navigation MUI
MUI dispose d'une version H5 intégrée du contrôle de navigation par dégradé transparent. Pour les didacticiels, veuillez vous référer au site officiel de mui ; la navigation par dégradé transparent est une solution de contournement pour résoudre le problème des barres de défilement atteignant le haut. , il a des performances plus élevées et de meilleurs effets d'animation. ;
L'article suivant vous expliquera comment implémenter l'effet de dégradé transparent de la barre de navigation MUI basée sur JS natif. Les détails spécifiques du contenu sont les suivants. suit :
Tout d'abord, déclarez : Étant donné que la valeur de backgroundColor utilise RGBA n'est pas prise en charge par IE8 et versions antérieures, cet effet ne prend donc pas en charge les navigateurs IE8 et versions antérieures
code CSS
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 p:first-child img{margin-top: 0;} .module-content p img{ display: block; width: 100%; margin-top: 10px; }
Code HTML
<header class="module-layer"> <p class="module-layer-content"> <p class="layer-return"></p> <h1 class="layer-head-name"> <p class="pr search-box"> <img class="shop-search" src="images/search.png"/> <input id="shop-input" type="text" placeholder="搜索店内商品" value="" /> </p> </h1> <p class="layer-share"></p> </p> </header> <p class="module-content"> <p><img src="images/banner.png"/></p> <p><img src="images/banner1.png"/></p> <p><img src="images/banner3.png"/></p> <p><img src="images/banner4.jpg"/></p> <p><img src="images/banner5.png"/></p> <p><img src="images/banner6.png"/></p> <p><img src="images/banner7.jpg"/></p> <p><img src="images/banner8.jpg"/></p> </p>
Code JS
(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); }())
Remarque :
n'est pas compatible avec les navigateurs IE IE8 et inférieurs
550 est la transparence finale de la position où atteint la barre de défilement, qui peut être personnalisée selon les besoins Le A du RGBA de la couleur d'arrière-plan finale CSS est la transparence finale Recommandations associées :Exemple de code pour JavaScript pour obtenir un bel effet de nuage de saut périlleux dans la barre de navigation personnalisée
Comment réaliser le lien de la barre de navigation pour sauter après avoir cliqué, et ajoutez de la couleur au lien correspondant de la nouvelle page
Introduction à la méthode de mise en œuvre de réalisation d'une barre de navigation tridimensionnelle avec CSS
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!