jquery 点击按钮 菜单元素超出部分横向滚动显示
效果:点击右侧三角形按钮,滚动显示隐藏的剧集菜单;


实现思路:设置子元素超出部分不显示且不换行,点击按钮时,使用js设置其父级元素的相对位置,使其横向偏移即可显示超出的元素。
HTML:
起初html代码如下,即 h3 标签父级元素只有一层,这时若对 <div class="seasonitem"> 设置css样式“超出部分隐藏且不换行”,只能将超出<div class="seasonitem">的h3元素隐藏,但并不能达到强制不换行的结果。原因:h3为块级元素,对其设置强制不换行无效。因为换行,这时即使点击后滚动,也并不能使超出部分显示。
<span class="rightBtn">◂</span> <div class="seasonitem"> <h3 onclick="Ajxseason(this)" id="11">第11季▼</h3> <h3 onclick="Ajxseason(this)" id="10">第10季</h3> <h3 onclick="Ajxseason(this)" id="9">第9季</h3> <h3 onclick="Ajxseason(this)" id="8">第8季</h3> <h3 onclick="Ajxseason(this)" id="7">第7季</h3> <h3 onclick="Ajxseason(this)" id="6">第6季</h3> <h3 onclick="Ajxseason(this)" id="5">第5季</h3> <h3 onclick="Ajxseason(this)" id="3">第3季</h3> <h3 onclick="Ajxseason(this)" id="2">第2季</h3> <h3 onclick="Ajxseason(this)" id="0">合集</h3> <h3 class="curseason" id="-1">其它</h3> </div> <span class="leftBtn">▸</span>
解决方法:在<div class="seasonitem"> 外层添加一层父级元素<div class="seasondiv">,然后对其设置css样式“超出部分隐藏且不换行”,并使 <div class="seasonitem">宽度尽可能长,保障其子元素无需换行,即可达到预期效果。
<span class="rightBtn">◂</span> <div class="seasondiv"> <div class="seasonitem"> <h3 onclick="Ajxseason(this)" id="11">第11季</h3> <h3 onclick="Ajxseason(this)" id="10">第10季</h3> <h3 onclick="Ajxseason(this)" id="9">第9季</h3> <h3 onclick="Ajxseason(this)" id="8">第8季</h3> <h3 onclick="Ajxseason(this)" id="7">第7季</h3> <h3 onclick="Ajxseason(this)" id="6">第6季</h3> <h3 onclick="Ajxseason(this)" id="5">第5季</h3> <h3 onclick="Ajxseason(this)" id="3">第3季</h3> <h3 onclick="Ajxseason(this)" id="2">第2季</h3> <h3 onclick="Ajxseason(this)" id="0">合集</h3> <h3 class="curseason" id="-1">其它▼</h3> </div> </div> <span class="leftBtn">▸</span>
CSS:
.seasondiv{
float:left;
width:920px;
height:56px;
white-space:nowrap;
overflow:hidden;
}
.seasonitem{
float:left;
width:3000px;
height:56px;
white-space:nowrap;
overflow:hidden;
}
.leftBtn{
width:50px;
height:56px;
float:right;
font-size:20px;
line-height: 56px;
text-align: center;
cursor:pointer;
margin-right:20px;
}
.rightBtn{
width:50px;
height:56px;
float:left;
font-size:20px;
line-height: 56px;
text-align: center;
cursor:pointer;
display:none;
}
JS:
<script type="text/javascript">
jQuery(document).ready(function () {
//向左按钮点击事件
var index = 0;
var liLen;
$(".leftBtn").click(function(){
index++;
liLen = $(".seasonitem h3").length;
if(index >= 4)
{
$(".seasonitem").stop();
$(".rightBtn").show();
index = 3;
}else{
if(index == 1)
{
$(".seasonitem").animate({"margin-left":-index*90},970);
}else{
$(".seasonitem").animate({"margin-left":-index*90},970);
}
}
});
//向右按钮点击事件
$(".rightBtn").click(function(){
if(index == 0)
{
$(".seasonitem").stop();
}else{
index--;
if(index == 0)
{
$(".seasonitem").animate({"margin-left":-index*90},970);
}else{
$(".seasonitem").animate({"margin-left":-index*90},970);
}
}
});
});
</script>


