Tab选项卡切换
2017-08-30 10:38
281 查看
Demo是这样子的:
麻烦之处在于当鼠标移动到骑士和火箭上是增加的border会与外面的div的border重叠
就像这样:
这样显然不好,一点都不美观
那怎么变美观呢?
我们先把结构弄出来:
其中一个解决方法是li:hover时把li的border覆盖掉div.tab的border,这样子看就是一条border,而不会出现两条border
那怎么实现呢?
从html结构可以看到ul是div里面的东西,所以它会一直在div里面,而覆盖掉border就需要把ul给弄出来,
我们可以利用position:absolute绝对定位,把ul给弄出来;
那我们就来实现吧
完成后的效果:
诶,两边怎么没有border呀,
哦,原来是我们浮动的ul的背景颜色挡住了原来div的border,那怎么才不让它挡呢?
用overflow:hidden;
为什么这个就行 呢?由于盒子模型,div真实的宽度是298px ,外面的border并不算是它的宽度,而overflow:hidden只消除div真实宽度之外的东西
完善后的代码:
效果图:
最后的hover代码:
如果你有更好的方法,欢迎留言…..
麻烦之处在于当鼠标移动到骑士和火箭上是增加的border会与外面的div的border重叠
就像这样:
这样显然不好,一点都不美观
那怎么变美观呢?
我们先把结构弄出来:
<div class="tab"> <ul> <li><a href="javascript:;">骑士</a></li> <li><a href="javascript:;">绿军</a></li> <li><a href="javascript:;">勇士</a></li> <li><a href="javascript:;">湖人</a></li> <li><a href="javascript:;">火箭</a></li> </ul> </div>
其中一个解决方法是li:hover时把li的border覆盖掉div.tab的border,这样子看就是一条border,而不会出现两条border
那怎么实现呢?
从html结构可以看到ul是div里面的东西,所以它会一直在div里面,而覆盖掉border就需要把ul给弄出来,
我们可以利用position:absolute绝对定位,把ul给弄出来;
那我们就来实现吧
.tab { width: 298px; height: 98px; margin: 100px; border: 1px solid #eee; position: relative;} .tab ul { height: 27px; position: absolute; width: 300px;//因为外面的div的宽度为:298px+两个1px的border = 300px; left:-1px;//我们向左浮动1px的距离,这1px就是border的宽 .tab li { float: left; width: 58px;//见padding注释 height: 26px; line-height: 26px;//居中显示 text-align: center; border-bottom: 1px solid #eee; padding: 0 1px; //这个地方非常神奇,当li:hover时需要在两边加一个border,因为300/5=60 ,如果我们写成60px的话会溢出来,写成58px后,我们用padding来填充这剩余的空间,当li:hover时再把padding 改为border }
完成后的效果:
诶,两边怎么没有border呀,
哦,原来是我们浮动的ul的背景颜色挡住了原来div的border,那怎么才不让它挡呢?
用overflow:hidden;
为什么这个就行 呢?由于盒子模型,div真实的宽度是298px ,外面的border并不算是它的宽度,而overflow:hidden只消除div真实宽度之外的东西
完善后的代码:
.tab { width: 298px; height: 98px; margin: 100px; border: 1px solid #eee; overflow: hidden; position: relative;} .tab ul { height: 27px; background-color: #E4E4E4; position: absolute; width: 300px; left: -1px; } .tab li { float: left; width: 58px; height: 26px; line-height: 26px; text-align: center; overflow: hidden; background-color: #fff; border-bottom: 1px solid #eee; padding: 0 1px; }
效果图:
最后的hover代码:
.tab li:hover{ padding:0;//padding 换border border-width:0 1px; border-style:solid; border-color: #eee; border-bottom: 1px solid #fff; }
如果你有更好的方法,欢迎留言…..
相关文章推荐
- jQuery 制作的Tab标签切换选项卡
- 37个Ajax和CSS实现的Tab选项卡切换效果界面
- 【js基础】Tab选项卡切换效果实现
- Android实现连续并排的若干个TextView单击改变背景颜色达到选项卡Tab栏切换效果
- Vue.js tab实现选项卡切换
- Android开发中用tabhost实现tab选项卡的切换
- 使用TabLayout和Viewpager实现选项卡切换
- jQuery Tab选项卡切换代码
- JS基于myFocus库实现各种功能的tab选项卡切换效果
- Vue.js组件tab实现选项卡切换
- jQuery+css3实现的超酷圆角tab选项卡切换效果
- 我是如何去了解jquery的(五),案例之切换选项卡Tab
- jQuery实现Tab选项卡切换效果简单演示
- Tab选项卡切换效果,mooc教程
- 微信小程序滚动Tab选项卡:左右可滑动切换
- MFC编程(标签控件Tab Control(选项卡控件) 和picture control 来实现视图的切换 )
- 转载【微信小程序】:微信小程序滚动Tab选项卡:左右可滑动切换(仿某宝)
- 37个Ajax和CSS实现的Tab选项卡切换效果界面
- Android仿微信底部实现Tab选项卡切换效果
- 自定义可滑动的tab选项卡,可切换选项卡样式(下划线,仿小米三角形,方形背景)