`

JS 滚动条控制box-shadow内阴影

 
阅读更多
inset 15px 0px 15px -15px rgba(34,39,238,41),	/*左边阴影  蓝色#2279ee*/
inset -15px 0px  15px -15px rgba(93,93,93,41);  /*右边阴影*/  

  

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{padding: 0;margin: 0;list-style: none;}
            #box{width: 792px;height: 300px;border: 1px solid #ddd;margin: 100px auto;position: relative;overflow: hidden;
				box-shadow:
				/*inset 15px 0px 15px -15px rgba(34,39,238,41),	左边阴影  蓝色#2279ee*/
				/*inset -15px 0px  15px -15px rgba(93,93,93,41);  右边阴影*/                
			}
            #box_top{position: absolute;left:0;top:20px;}
            #box_top li{float: left; white-space: nowrap;}
            #box_bottom{width: 100%;position: absolute;left: 0;bottom: 0;background: #e8e8e8;height: 25px;}
            #mask{height: 25px;background: orangered;border-radius: 12px;position: absolute;left: 0;top: 0;cursor: pointer;}
            /*#box_top li img{
                -webkit-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
            }*/
        </style>
    </head>
    <body>
        <div id="box">
		
            <ul id="box_top">
                <li>PingWest品玩7月10讯,根据路透社报道,美国商务部长威尔伯·罗斯(Wilbur Ross)表示,美国商务部将在不危及美国国家安全的情况下,向华为的美国供应商发放许可证。罗斯表示,华为仍在实体清单中,并且禁止的项目范围也不会改变,这意味着申请许可证可能会被拒绝,但此次打开了申请许可证的大门。报道称,行业观察人士表示目前对实际政策的范围以及哪些类型将被批准或被拒绝尚不清楚,只能通过提交申请来确定。</li>
            </ul>
            <div id="box_bottom">
                <span id="mask"></span>
            </div>
			
        </div>
         
        <script type="text/javascript">
            window.onload = function(){
                var box = document.getElementById("box")
                var box_top = document.getElementById("box_top")
                var box_bottom = document.getElementById("box_bottom")
                var mask = document.getElementById("mask")
                 
    //          获取内容的总宽度
                var li= box_top.children[0]
                console.log(li.offsetWidth)
                
                var liL = box_top.children[0].offsetWidth
                box_top.style.width = liL + "px"
                         
    //          滚动条的长度 = (盒子的宽度 / 内容的宽度)*盒子的宽度
                var mask_len = (box.offsetWidth / box_top.offsetWidth)*box.offsetWidth
                mask.style.width = mask_len + "px"
				
				if(box_top.offsetWidth > box.offsetWidth){
					box.style.boxShadow = 'inset -15px 0px  15px -15px rgba(93,93,93,41)';
					mask.style.display = '';
					box_bottom = 'none';
				}else{
					box.style.boxShadow = '';
					mask.style.display = 'none';
					box_bottom = 'none';
				}
                 
    //          鼠标操作
                mask.onmousedown = function(e){
                    e = e || event
                    var beginX = e.clientX - mask.offsetLeft
                    document.onmousemove = function(e){
                        e = e || event
                        var endX = e.clientX - beginX
                        if(endX < 0){
                            endX = 0
                        }
                        if(endX >= box.offsetWidth - mask.offsetWidth){
                            endX = box.offsetWidth - mask.offsetWidth
                        }
                        
                        mask.style.left = endX + "px"
						
						console.log('beginX = ' + beginX);
						console.log('endX = ' + endX);
						
						if(endX == 0){
							box.style.boxShadow = 'inset -15px 0px  15px -15px rgba(93,93,93,41)';
						}else if(endX > 0 && endX < box.offsetWidth - mask.offsetWidth){
							box.style.boxShadow = 'inset 15px 0px 15px -15px rgba(34,39,238,41), inset -15px 0px  15px -15px rgba(93,93,93,41)';
						}else if (endX == box.offsetWidth - mask.offsetWidth){
							box.style.boxShadow = 'inset 15px 0px 15px -15px rgba(34,39,238,41)';
						}else{
							box.style.boxShadow = 'inset 15px 0px 15px -15px rgba(34,39,238,41), inset -15px 0px  15px -15px rgba(93,93,93,41)';
						}
                         
    //                  内容走的距离 = (内容的长度 - 盒子的长度 )/ (盒子的长度 - 滚动条的长度)*滚动条走的距离
                        var contentL = (box_top.offsetWidth - box.offsetWidth)/(box.offsetWidth - mask.offsetWidth)*endX
                        box_top.style.left = -contentL + "px"
                        window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()//防止拖动时选中内容      
                    }
                    document.onmouseup= function(e){
                        e = e || event
                        document.onmousemove = null
                    }
                 
                }
            }
        </script>
    </body>
</html>

 

 

 

 

参考:

CSS3 box-shadow

js div模拟水平滚动条

分享到:
评论

相关推荐

    纯css控制内容随滚动条滚动,可放任意位置

    标题“纯css控制内容随滚动条滚动,可放任意位置”以及描述中的“纯CSS实现客服悬浮窗,随浏览器滚动而滚动。可任意自定义位置。代码简洁易懂。兼容一切主流浏览器”都指向了这一技术——固定定位(fixed ...

    css3 滚动条美化

    `::-webkit-scrollbar`用于设置整体滚动条的样式,而`::-webkit-scrollbar-part`可以细粒度地控制滚动条各个部分,如轨道、滑块、按钮等。 1. **宽度和高度**:使用`width`和`height`属性可以改变滚动条的尺寸。...

    HTML自定义滚动条(仿网易邮箱滚动条)

    - **边框和阴影**:添加`border`和`box-shadow`可以为滚动条增加立体感和深度。 - **滑块的圆角**:使用`border-radius`属性可以制作出圆润的滚动条滑块,符合网易邮箱的UI设计风格。 - **滑动效果**:为了提高用户...

    8款JS实现的网页滚动条效果scrollbar代码.rar

    JavaScript允许开发者动态地改变网页元素,包括创建、修改和控制滚动条的行为。例如,可以定制滚动条的颜色、形状、宽度、动画效果等,使得滚动条更加符合网站的视觉风格。 在CSS方面,这些插件利用CSS3的新特性,...

    CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解

    需要注意的是,这些CSS3的滚动条样式只在基于WebKit的浏览器(如Chrome、Safari)中有效,对于其他非WebKit浏览器(如Firefox、Edge),可能需要使用JavaScript库或浏览器特定的解决方案来实现兼容性。

    用CSS实现跟随滚动条漂浮层代码

    总的来说,CSS的`position`属性是实现跟随滚动条漂浮层的关键。通过巧妙地设置`top`、`bottom`、`left`和`right`属性,你可以自由地定制漂浮层在页面上的位置,为用户提供更流畅的浏览体验。在实际项目中,可以结合...

    浮动div,页面两边滚随滚动条滚动的DIV

    综上所述,"浮动div,页面两边滚随滚动条滚动的DIV"是一种通过CSS和JavaScript实现的动态布局效果,它可以使页面上的特定内容始终保持在用户视线范围内,提供更好的用户体验。在实际应用中,可能还需要考虑不同设备...

    1.13 项目实战-商城官网实现(三).pdf

    3. **textarea**:设置宽度和高度,禁止缩放,去除滚动条,并调整行高和内边距。 4. **提交按钮**:定义按钮的尺寸、边框样式、行高、字体、颜色、大小以及鼠标指针形状,使其具有可点击的外观。 最后,**项目总结*...

    CSS 设置滚动条样式的实例代码

    在CSS中,我们可以使用特定的伪元素和伪类来定制滚动条的样式,这使得滚动条不仅具有功能,还能成为页面设计的一部分。标题提到的"CSS 设置滚动条样式的实例代码"是关于如何通过CSS3来改变网页滚动条的外观。下面...

    CSS3改变浏览器滚动条样式

    - **阴影**:通过`box-shadow`属性为滚动条添加阴影效果,提升立体感。 - **过渡效果**:使用`transition`属性为滚动条的显示和隐藏添加平滑过渡,提高用户体验。 需要注意的是,这些样式只适用于支持`-webkit-`...

    纯CSS3实现带吸附和阴影效果的垂直菜单导航功能源码.zip

    当用户滚动页面时,通过JavaScript或CSS的`scroll`事件监听滚动条位置,然后调整菜单的位置,使其始终保持在屏幕的某个特定位置,从而达到吸附效果。 阴影效果则可以通过CSS3的`box-shadow`属性来实现。`box-shadow...

    百分比滚动(超漂亮水珠动态)JS代码.zip

    【标题】"百分比滚动(超漂亮水珠动态)JS代码.zip" 提供的是一种使用JavaScript和CSS3技术实现的动态效果,它可能是用于创建一个视觉吸引力强、以水珠形式展示进度或百分比的滚动条。在网页设计中,这种非传统滚动...

    jquery css3点击水波动画滑动导航条代码

    `可以隐藏超出容器的内容并添加滚动条。在动画中,可能通过改变`top`或`left`值来实现导航条的滑入滑出效果。 在实际项目中,这些技术通常与HTML结构配合使用,创建出完整的交互式导航条。例如,导航条的每个链接...

    途牛旅游网CSS3动画特效.zip

    在途牛旅游网的页面中,可能会用到此属性来实现滚动条的平滑滚动、图片轮播的无缝切换或者导航栏的悬停效果。例如,通过`transform: translateX()`可以实现元素水平方向的移动。 3. **过渡(transition)** 过渡...

    网页的浮动飘窗(Javascript)

    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); /* 阴影效果 */ } ``` 然后,我们使用JavaScript来处理页面滚动事件,确保飘窗始终在视口内可见。这通常涉及到计算飘窗相对于视口的位置,并根据滚动条的位置进行调整...

    超级漂亮的js日历控件参考.pdf

    - 使用类如`.controlButton`来定义按钮的样式,以及`.selectBox`来定义下拉框的样式,包括滚动条的颜色和样式。 - `cursor:default`和`cursor:hand`分别设置了元素的鼠标指针形状,前者表示默认行为,后者表示可...

    css3表格样式产品价格页面表格样式

    `box-shadow`属性可以为表格添加阴影效果,使表格看起来更有立体感。例如,`box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);`会为表格添加一个微小的黑色阴影。结合`transform`属性,可以实现旋转、缩放等三维效果,...

    jquery仿微信聊天对话窗口滚动样式特效代码

    利用`:before`和`:after`伪元素可以创建气泡的指向箭头,通过CSS3的`border-radius`实现圆角,`box-shadow`实现阴影效果。 5. **动画效果**:为了增加用户体验,可以添加动画效果,如消息入栈的滑动效果。使用...

Global site tag (gtag.js) - Google Analytics