十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在网页中我们经常看到鼠标划上时会显示一些网页中一开始没有的东西,例如二级菜单,或者鼠标划上图片时会显示一些淡入淡出的效果
创新互联公司主营万山网站建设的网络公司,主营网站建设方案,app开发定制,万山h5成都微信小程序搭建,万山网站营销推广欢迎万山等地区企业咨询
问:这是怎么原理实现的?
其实就是显示和隐藏
问:那么这个现实和隐藏如何实现呢?
其实方法有很多,下面我来带着大家看一下每种实现方式和其不同点
无论使用哪一种方式实现,首先这个东西必须先存在,我们先在结构中存在
一级导航
二级导航 二级导航 二级导航
这样的结构写法在我们的页面中一开始是所有的导航都是显示的
我们想要实现一开始只显示一级导航效果,当鼠标划上一级导航的时候显示二级导航效果
方法一:用display:none;和display:block;方式实现
一开始给p标签一个display:none;
当鼠标划上div时让p标签显示 div:hover p{display:block;}
注意:此方式可以实现显示和隐藏的效果,但是不支持过渡效果,也就是你不能看到逐渐显示的过程
方法二:用opacity:0; opacity:1方式实现
一开始给p标签一个opacity:0;
当鼠标划上div时让p标签显示 div:hover p{opacity:1;}
注意:此方式可以实现显示和隐藏的效果,支持过渡效果,在p标签的初始状态上加上一个transition:1s; 你是可以看到从无到有淡入淡出的效果的
need-to-insert-img
方法三:用height:0; height:100px方式实现
一开始给p标签添加一个height:0; 但是由于里面有二级菜单的内容文字所以会存在溢出,添加一个overflow:hidden即可解决
当鼠标划上div时让p标签显示 div:hover p{height:100px;}
注意:此方式可以实现显示和隐藏的效果,支持过渡效果,在p标签的初始状态上加上一个transition:1s; 你是可以看到类似于卷帘门从上向下拉的效果。
哈哈是不是学到了,好了不说了,老铁们自己看着办法,反正我把方式方法都告诉大家了,是收藏还是点赞。
css隐藏元素有两种方法:
1最常见的display: none这种是将元素直接隐藏,不在文档流里面了。
2visibility: hidden这种也是隐藏,但不是在文档流中隐藏,因为你虽然看不见它,但它还存在着,它还具有宽度和高度。
display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
display:block可以显示一个块元素,或者display:inline是显示一个内联元素。
display主要用的CSS样式有以下三个:
display:block——显示为块级元素。
display:inline——显示为内联元素。
display:inline-block——显示为内联块元素,表现为同行显示并可修改宽高内外边距等属性。
扩展资料:
显示的块级元素(block)特性:总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示;宽度(width)、高度(height)、内边距(padding)和外边距(margin)都可控制;
显示的内联元素(inline)特性:和相邻的内联元素在同一行;宽度(width)、高度(height)、内边距的top/bottom(padding-top/padding-bottom)和外边距的top/bottom(margin-top/margin-bottom)都不可改变,就是里面文字或图片的大小;
块级元素主要有:address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li等css属性。
内联元素主要有:a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var等css属性。
1、overflow:hidden; 这是防止溢出,也是一种隐藏,只不过是把超出范围的元素隐藏,这种一般用于文字过多或者图片特效以及自适应中div没法设置高度时使用
2、display:none;这就是完全的隐藏了,直接消失,任何对该元素直接的用户交互操作都不可能生效,被隐藏的元素完全不会占用空间,仿佛元素完全不存在一样。
3、利用opacity透明度来隐藏,opacity设置为0,它只是一种视觉隐藏,元素本身依旧占用它的位置并对网页的布局起到作用,它也同样影响用户交互。在读屏软件中会被识别。
4、position:元素的定位。把position:absolutely;top:-4555px;left:-45545px;top和left设置成足够大的负数,相当于把元素放到可视区域外,它不会影响布局,能够让元素保持可操作性,在读屏软件上可以被识别。
5、visibility:规定元素 是否可见,一般设置为hidden,它可以很好的隐藏,不会影响用户的交互,在读屏软件中不会被识别。
1)一般来说,偏移掉字体的方式是使用:text-indent:-9999px; (注意:只能用于block,table cells和inline-block)
text-indent:-9999px;的具体使用方法:把h1作为一个块来显示(display:block;),指定长宽(和图片一样大小),然后指定h1的背景图片,也就是将我们需要的图片作为h1这个 标签的背景。而h1标签中插入的,仍然是作为字符形式出现的博客标题,然后用text-indent:-9999px;将文字甩到屏幕看不到的地 方。(9999px应该是足够了,谁的屏幕也没那么大吧)
如:
h1a href=“”博客园/a/h1
在CSS文件中:(注意:将h1转化成block的话,他身后的的元素就被他赶到下一行了。如果正好这个h1后面,是一个按钮,就要用float来浮动以使他身后再出现簇拥者)
h1 a{height:30px;width:165px;float:left;text-indent:-9999px;background-image:url(images/logo.gif);background-repeat:no-repeat;display:block;position:relative;
}
在h1使用上语义明确,符合语义化定义。text-indent就是首行缩进,大家都在中文段落,首行空两格用过它。这里通过负值缩进,使文字 超出可视区,而这时h1下的背景就显示出来了,h1中包含的a标签又不影响使用,对于隐藏文字“站点名称”应该是最佳方案了。但对于多段 文字的隐藏这个方法就不适合了。
另外,点击h1a链接时,会产生一个虚线框,对于IE还好,没什么问题,虚线框只是在背影图片大小。但是Firefox就有些麻烦,它把缩进的文字范围也包含进来了,这样不是很美观。
于是需要屏掉点击时产生的虚线框,IE和FF屏虚线框方法不一样。IE采用的遍历方法(HTC,css表达式)有些耗系统资源,正好我们只需要隐藏FF下的虚线框就行了,IE就不管了,说一下Firefox如何去掉链接的虚线框的方法。
a{outline:none;
}
outline是css3的一个属性,用的很少。声明,这是个不能兼容的css属性,在ie6、ie7、遨游浏览器都不兼容。只有ff,ie8在加了outline:none后会取消聚焦的虚线框。
2)使用overflow:hidden;完美隐藏background之上的字体
line-height:0;
font-size:0;
overflow:hidden;
或 (不大适合用在h1标签上).text-hidden {display:block;overflow:hidden;width:0;height:0;
}
3)还有另外2种方法,不推荐使用。
1、display:none;
这个大家普遍说法是,搜索引擎可能认为被隐藏的文字属于垃圾信息而被忽略,不为隐藏的对象保留物理占位空间。GG也搜CSS文件?不过如果用这个方法,h1如何设计,也是难题。
2、visibility:hidden;
和display:none;相对应,为隐藏的对象保留物理占位空间。