单纯使用CSS能实现滑动门效果?

html-css017

单纯使用CSS能实现滑动门效果?,第1张

可以的,纯css做滑动门有两种办法,一个利用hover伪类,另一种就是设置锚点。对应两种方式触发滑动门效果,鼠标悬浮和点击。

下面各举一例,

鼠标悬浮触发:(此例ie6下无效,因其暂不支持li:hover的伪类)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>纯CSS下拉菜单</title>

<style type="text/css">

a{

font-size:12px

text-decoration:none

color:#000000}

li ul{

display:none

margin-left:5px}

li:hover ul{

width:306px

padding:20px

height:250px

display:block

}

li:hover .fira{border-bottom:#FFFFFF 1px solid

}#kpk{

position:relative

width:420px

}

#kpk>li{

float:left

list-style:none

margin-right:20px

}

#kpk>li .fira{

border:1px #c6c6c6 solid

}

.seca{

position:absolute

z-index:1

left:-5px

top:23px

border:1px #c6c6c6 solid

height:250px

width:306px

padding:20px

height:250px

}

.fira{

width:70px

display:block

line-height:22px

background-color:white

text-align:center

z-index:2

}</style>

</head><body>

<div>

<ul id="kpk">

<li>

<a href="#" class="fira">首页</a>

<ul class="seca" rel="first">

<li><A href="#" target=_self>1.首页新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河</A></li>

<li><A href="#" target=_self>2.首页最高法:承诺不判赖昌星死刑没有超越法律程序</A></li>

<li><A href="#" target=_self>3.首页物权法:满70年住宅建设用地使用权将自动续期</A></li>

<li><A href="#" target=_self>4.首页弟弟被妻下药毒死男子买女尸为其配阴婚(图)</A></li>

<li><A href="#" target=_self>5.首页揭开郑州神枪手神秘面纱 头号狙击手是近视眼</A></li>

<li><A href="#" target=_self>6.首页美军高官:不排除和中国发生直接军事对抗可能</A></li>

<li><A href="#" target=_self>7.首页浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕</A></li>

<li><A href="#" target=_self>8.首页西方炒作"中国航母威胁论"称05年已正式服役</A></li>

<li><A href="#" target=_self>9.首页女孩生活无法自理请人大代表递交安乐死议案</A></li>

<li><A href="#" target=_self>10.首页建设部:住房公积金制度将覆盖农民工</A></li>

</ul>

<!--<ul>

<li>11</li>

<li>12</li>

<li>13</li>

</ul>-->

</li>

<li>

<a href="#" class="fira">链接一</a>

<ul class="seca">

<li><A href="#" target=_self>1.链接一新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河</A></li>

<li><A href="#" target=_self>2.链接一最高法:承诺不判赖昌星死刑没有超越法律程序</A></li>

<li><A href="#" target=_self>3.链接一物权法:满70年住宅建设用地使用权将自动续期</A></li>

<li><A href="#" target=_self>4.链接一弟弟被妻下药毒死男子买女尸为其配阴婚(图)</A></li>

<li><A href="#" target=_self>5.链接一揭开郑州神枪手神秘面纱 头号狙击手是近视眼</A></li>

<li><A href="#" target=_self>6.链接一美军高官:不排除和中国发生直接军事对抗可能</A></li>

<li><A href="#" target=_self>7.链接一浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕</A></li>

<li><A href="#" target=_self>8.链接一西方炒作"中国航母威胁论"称05年已正式服役</A></li>

<li><A href="#" target=_self>9.链接一女孩生活无法自理请人大代表递交安乐死议案</A></li>

<li><A href="#" target=_self>10.链接一建设部:住房公积金制度将覆盖农民工</A></li>

</ul>

<!--<ul>

<li>21</li>

<li>22</li>

<li>23</li>

</ul>-->

</li>

<li>

<a href="#" class="fira">链接二</a>

<ul class="seca">

<li><A href="#" target=_self>1.链接二新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河</A></li>

<li><A href="#" target=_self>2.链接二最高法:承诺不判赖昌星死刑没有超越法律程序</A></li>

<li><A href="#" target=_self>3.链接二物权法:满70年住宅建设用地使用权将自动续期</A></li>

<li><A href="#" target=_self>4.链接二弟弟被妻下药毒死男子买女尸为其配阴婚(图)</A></li>

<li><A href="#" target=_self>5.链接二揭开郑州神枪手神秘面纱 头号狙击手是近视眼</A></li>

<li><A href="#" target=_self>6.链接二美军高官:不排除和中国发生直接军事对抗可能</A></li>

<li><A href="#" target=_self>7.链接二浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕</A></li>

<li><A href="#" target=_self>8.链接二西方炒作"中国航母威胁论"称05年已正式服役</A></li>

<li><A href="#" target=_self>9.链接二女孩生活无法自理请人大代表递交安乐死议案</A></li>

<li><A href="#" target=_self>10.链接二建设部:住房公积金制度将覆盖农民工</A></li>

</ul>

<!--<ul>

<li>31</li>

<li>32</li>

<li>33</li>

</ul>-->

</li>

<li>

<a href="#" class="fira">链接三</a>

<ul class="seca">

<li><A href="#" target=_self>1.链接三新疆阜康铁路桥梁坍塌多节运煤车厢侧翻坠河</A></li>

<li><A href="#" target=_self>2.链接三最高法:承诺不判赖昌星死刑没有超越法律程序</A></li>

<li><A href="#" target=_self>3.链接三物权法:满70年住宅建设用地使用权将自动续期</A></li>

<li><A href="#" target=_self>4.链接三弟弟被妻下药毒死男子买女尸为其配阴婚(图)</A></li>

<li><A href="#" target=_self>5.链接三揭开郑州神枪手神秘面纱 头号狙击手是近视眼</A></li>

<li><A href="#" target=_self>6.链接三美军高官:不排除和中国发生直接军事对抗可能</A></li>

<li><A href="#" target=_self>7.链接三浙江东阳传奇富姐吴英涉嫌非法吸收存款被批捕</A></li>

<li><A href="#" target=_self>8.链接三西方炒作"中国航母威胁论"称05年已正式服役</A></li>

<li><A href="#" target=_self>9.链接三女孩生活无法自理请人大代表递交安乐死议案</A></li>

<li><A href="#" target=_self>10.链接三建设部:住房公积金制度将覆盖农民工</A></li>

</ul>

<!--<ul>

<li>41</li>

<li>42</li>

<li>43</li>

</ul>-->

</li>

</ul>

</div>

</body>

</html>

锚点点击例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>

<title>左右布局</title>

<style type="text/css">

#nav{

width:303px

height:200px

border:1px solid #CCCCCC

}

#column a {

float:left

width:100px

border-right:1px solid #CCC

border-bottom:1px solid #CCC

font:bold 14px/30px Arial, Helvetica, sans-serif

color:#000

text-decoration:none

text-align:center

}

#contant {

width:303px

height:162px

overflow:hidden

}

ul {

margin:0

padding:0

list-style-type:none

padding:4px 0 0 5px

}

li {

font-size:12px

overflow:hidden

padding-left:2px

line-height:27px

}

</style>

</head>

<body>

<div id="nav">

<div id="column"><a href="#localnew">本地新闻</a><a href="#innernew">国内新闻</a><a href="#enterment" >娱乐新闻</a></div>

<div id="contant">

<ul id="localnew">

<li><a href="#">我喜欢CSS </a></li>

<li><a href="#">我喜欢CSS </a></li>

<li><a href="#">我喜欢CSS </a></li>

<li><a href="#">我喜欢CSS </a></li>

<li><a href="#">我喜欢CSS</a></li>

<li><a href="#">我喜欢CSS</a></li>

</ul>

<ul id="innernew">

<li><a href="#">我喜欢编程</a></li>

<li><a href="#">我喜欢编程</a></li>

<li><a href="#">我喜欢编程</a></li>

<li><a href="#">我喜欢编程 </a></li>

<li><a href="#">我喜欢编程</a></li>

<li><a href="#">我喜欢编程</a></li>

</ul>

<ul id="enterment">

<li><a href="#">我喜欢美工</a></li>

<li><a href="#">我喜欢美工</a></li>

<li><a href="#">我喜欢美工</a></li>

<li><a href="#">我喜欢美工</a></li>

<li><a href="#">我喜欢美工 </a></li>

<li><a href="#">我喜欢美工</a></li>

<li><a href="#">我喜欢美工</a></li>

</ul>

</div>

</div>

</body>

</html>

楼主自行copy代码到本地查看,样式微调。。。

完全用CSS控制就可以了,页面在滚动,给这个DIV设置position:fixed那么页面不管怎么滚动,这个DIV是中在顶端

解决方案二:

显示合作div absolute定位,判断滚动到div位置的时候设置position为fixed,同时设置top为0

<div style="height:500pxbackground:#999"></div>

<div id="fixedMenu" style="background:#eeewidth:100%">我是菜单,我到页头会固定</div>

<div style="height:900pxbackground:#999"></div>

<script type="text/javascript" src="http://www.coding123.net/js/jquery.js"></script>

<script type="text/javascript">

$(function () {

var ie6 = /msie 6/i.test(navigator.userAgent)

, dv = $('#fixedMenu'), st

dv.attr('otop', dv.offset().top)//存储原来的距离顶部的距离

$(window).scroll(function () {

st = Math.max(document.body.scrollTop || document.documentElement.scrollTop)

if (st >= parseInt(dv.attr('otop'))) {

if (ie6) {//IE6不支持fixed属性,所以只能靠设置position为absolute和top实现此效果

dv.css({ position: 'absolute', top: st })

}

else if (dv.css('position') != 'fixed') dv.css({ 'position': 'fixed', top: 0 })

} else if (dv.css('position') != 'static') dv.css({ 'position': 'static' })

})

})

</script>

解决方案三:

对页面y轴偏移量进行判断,如果大于某个值(具体情况具体应对),克隆原来的层,设置新的id,新的id意味着新的css样式:position:fixed,然后隐藏原来的层,添加克隆的层; 否则,即向上滑动到一定位置时,remove克隆的层,显示隐藏的层,达到目的~代码仅供参考。。。

$(window).scroll(function(){

if(window.pageYOffset>108){

if($("#topbar").length == 0){

var x=$("#wrap_most_used_bookmark").clone()

x.attr("id","topbar")

$("body").append(x)

$("#return_top").fadeIn()

}

}

else{

$("#topbar").remove()

$("#return_top").fadeOut()

}

})

如果是在回调里置顶DIV的话(比如点击事件),可以用scrollIntoView。 scrollIntoView如果不想吸顶 可以加个before伪类设置高度 CSS3滚动置顶目前有两种解决方案: 第一种(主流):transform: translate3d(x,y,z) 第二种(未来):position: stickytop:xxx 假设需求: 需求一:滚动过程中A ,C区域不吸顶,B区域吸顶 VUE框架推荐直接使用vantUI插件,indexbar索引栏。https://youzan.github.io/vant/#/zh-CN/index-barvantUI原理用的是transform。 以上面图片为例大致讲解: 1.transform对JS的能力要求高些,页面加载完毕后,给每个B区域对应的DIV设置translate3d的Y轴值,值为B对应div离顶部的高度。 2.当开始滚动起来后,Y轴值为原来值减去滚动条滚动距离值 3.当Y轴值小于0的时候,锁死为0,就自动吸顶了 4.当待置顶DIV的translate3d Y轴值小于DIV的高度时,已置顶DIV的Y轴值开始变为负数,这样会有一个顶出的效果 5.已置顶DIV被待置顶DIV顶出一定距离(一般两倍DIV高度),取消translate3d属性, 6.回滚反向计算即可 需求二:滚动过程中 C不吸顶,B吸顶,A一直吸顶 B在A下面 这个需求vantUI(v2.9.3)目前解决不了,采用translate太复杂,决定采用CSS3新属性position: sticky。 如果是2018年使用该属性兼容性还是个问题,但来到2020年下半年,对大部分生产环境都不是问题。博主测试的IOS11和安卓小米 华为 都支持该属性。博主的建议是:如果是公司APP内嵌H5页面或者微信打开可以使用该属性,如果纯H5页面 ,建议translate. position: sticky字面意思就是粘性定位。 可以粘顶部也可以粘底部 右侧 左侧。 所以除了position: sticky还要给一个定位值,比如top:0px或者right:0px就可以了 非常简单。 比如直接给Bdiv设置下面样式就行 实际使用要注意下面几点: 1.如果想兼容IOS12 IOS11 必须带position: -webkit-sticky而且要在样式表里写,不能写在style里。 2.容器相关。只有要移除容器范畴才起作用。比如body的height不要设置100%,height:100%表示所有元素一直在屏幕范围