Web前端工程师应该知道的CSS隐藏页面元素的方法

html-css021

Web前端工程师应该知道的CSS隐藏页面元素的方法,第1张

今天小编要跟大家分享的文章是关于Web前端工程师应该知道的CSS隐藏页面元素的方法。用CSS隐藏页面元素有许多种方法。你可以将opacity

设为0、将visibility设为hidden、将display设为none或者将position设为absolute

然后将位置设到不可见区域。

你有没有想过,为什么我们要有这么多技术来隐藏元素,而它们看起来都实现的是同样的效果?每一种方法实际上与其他方法之间都有一些细微的不同,这些

不同决定了在一个特定的场合下使用哪一个方法。这篇教程将覆盖到那些你需要记住的细小不同点,让你根据不同情况选择上面这些方法中适合的方法来隐藏元素。正在从事web前端工作的小伙伴们来和小编一起学习一下吧!

一、opacity

opacity属性的意思是设置一个元素的透明度。它不是为改变元素的边界框(boundingbox)而设计的。这意味着将opacity设为0

只能从视觉上隐藏元素。而元素本身依然占据它自己的位置并对网页的布局起作用。它也将响应用户交互。

.hide{

opacity:0}

如果你打算使用opacity

属性在读屏软件中隐藏元素,很不幸,你并不能如愿。元素和它所有的内容会被读屏软件阅读,就像网页上的其他元素那样。换句话说,元素的行为就和它们不透明时一致。

我还要提醒一句,opacity属性可以用来实现一些效果很棒的动画。任何opacity属性值小于1

的元素也会创建一个新的堆叠上下文(stackingcontext)。

看下面的例子:

看@SitePoint提供的例子“用opacity隐藏元素”

当你的鼠标移到被隐藏的第2个的区块上,元素状态平滑地从完全透明过渡到完全不透明。区块也将cursor属性设置为了

pointer,这说明了用户可以与它交互。

二、visibility

第二个要说的属性是visibility。将它的值设为hidden将隐藏我们的元素。如同opacity

属性,被隐藏的元素依然会对我们的网页布局起作用。与opacity唯一不同的是它不会响应任何用户交互。此外,元素在读屏软件中也会被隐藏。

这个属性也能够实现动画效果,只要它的初始和结束状态不一样。这确保了visibility

状态切换之间的过渡动画可以是时间平滑的(事实上可以用这一点来用hidden实现元素的延迟显示和隐藏——译者注)。

.hide{

visibility:hidden}

下面的例子演示了visibility与opacity有怎样的不同:

看@SitePoint提供的例子“用visibility隐藏元素”

注意,如果一个元素的visibility被设置为hidden,同时想要显示它的某个子孙元素,只要将那个元素的visibility显式设置为

visible即可(就如例子里面的.o-hidep——译者注)。尝试只hover在隐藏元素上,不要hover在p

标签里的数字上,你会发现你的鼠标光标没有变成手指头的样子。此时,你点击鼠标,你的click事件也不会被触发。

而在标签里面的

标签则依然可以捕获所有的鼠标事件。一旦你的鼠标移动到文字上,

本身变得可见并且事件注册也随之生效。

三、display

display属性依照词义真正隐藏元素。将display属性设为none

确保元素不可见并且连盒模型也不生成。使用这个属性,被隐藏的元素不占据任何空间。不仅如此,一旦display设为none

任何对该元素直接打用户交互操作都不可能生效。此外,读屏软件也不会读到元素的内容。这种方式产生的效果就像元素完全不存在。

任何这个元素的子孙元素也会被同时隐藏。为这个属性添加过渡动画是无效的,它的任何不同状态值之间的切换总是会立即生效。

不过请注意,通过DOM依然可以访问到这个元素。因此你可以通过DOM来操作它,就像操作其他的元素。

.hide{

display:none}

看下面的例子:

@SitePoint提供的例子“用display隐藏元素”

你将看到第二个块元素内有一个

元素,它自己的display属性被设置成block,但是它依然不可见。这是

visibility:hidden和display:none的另一个不同之处。在前一个例子里,将任何子孙元素visibility显式设置成

visible可以让它变得可见,但是display不吃这一套,不管自身的display值是什么,只要祖先元素的display是

one,它们就都不可见。

现在,将鼠标移到第一个块元素上面几次,然后点击它。这个操作将让第二个块元素显现出来,它其中的数字将是一个大于0

的数。这是因为,元素即使被这样设置成对用户隐藏,还是可以通过JavaScript来进行操作。

四、position

假设有一个元素你想要与它交互,但是你又不想让它影响你的网页布局,没有合适的属性可以处理这种情况(opacity和visibility影响布局,

display不影响布局但又无法直接交互——译者注)。在这种情况下,你只能考虑将元素移出可视区域。这个办法既不会影响布局,有能让元素保持可以操作。下面是采用这

种办法的CSS:

.hide{

position:absolute

top:-9999px

left:-9999px}

下面的例子阐明了怎样通过绝对定位的方式隐藏元素,并让它和前面的那个例子效果一样:

看@SitePoint提供的例子“用position属性隐藏元素”

这种方法的主要原理是通过将元素的top和left

设置成足够大的负数,使它在屏幕上不可见。采用这个技术的一个好处(或者潜在的缺点)是用它隐藏的元素的内容可以被读屏软件读取。这完全可以理解,是因为你只是将元素移到可视区域外面让用户无法看到它。

你得避免使用这个方法去隐藏任何可以获得焦点的元素,因为如果那么做,当用户让那个元素获得焦点时,会导致一个不可预料的焦点切换。这个方法在创建

自定义复选框和单选按钮时经常被使用。(用DOM模拟复选框和单选按钮,但用这个方法隐藏真正的checkbox和radio

元素来“接收”焦点切换——译者注)

五、clip-path

隐藏元素的另一种方法是通过剪裁它们来实现。在以前,这可以通过clip属性来实现,但是这个属性被废弃了,换成一个更好的属性叫做

clip-path。NitishKumar最近在SitePoint发表了“介绍clicp-path

属性”这篇文章,通过阅读它可以了解这个属性的更多高级用法。

记住,clip-path属性还没有在IE或者Edge下被完全支持。如果要在你的clip-path中使用外部的SVG

文件,浏览器支持度还要更低。使用clip-path属性来隐藏元素的代码看起来如下:

.hide{

clip-path:polygon(0px0px,0px0px,0px0px,0px0px)}

下面是一个实际使用它的例子:

看@SitePoint提供的例子“用clip-path属性隐藏元素”

如果你把鼠标悬停在第一个元素上,它依然可以影响第二个元素,尽管第二个元素已经通过clip-path隐藏了。如果你点击它,它会移除用来隐藏的

class,让我们的元素从那个位置显现出来。被隐藏元素中的文字仍然能够通过读屏软件读取,许多WordPress站点使用clip-path或者之前的

clip来实现专门为读屏软件提供的文字。

虽然我们的元素自身不再显示,它也依然占据本该占据的矩形大小,它周围的元素的行为就如同它可见时一样。记住用户交互例如鼠标悬停或者点击在剪裁区

域之外也不可能生效。在我们的例子里,剪裁区大小为零,这意味着用户将不能与隐藏的元素直接交互。此外,这个属性能够使用各种过渡动画来实现不同的效果。

结论

在这篇教程里,我们看了5种不同的通过CSS

隐藏元素的方法。每一种方法都与其他几种有一点区别。知道你想要实现什么有助于你决定采用哪一个属性,随着时间推移,你就能根据实际需求本能地选择最佳方式了。

以上就是小编今天为大家分享的关于Web前端工程师应该知道的CSS

隐藏页面元素的方法的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助,想要了解更多web前端相关知识记得关注北大青鸟web培训官网。最后祝愿小伙伴们工作顺利!

回答于 2022-10-28 详情 该链接由问题回答方推荐

只是一点提示,如果你仍然想要使用所有浏览器对无线电和复选框的本机支持,比如用↑和↓键在它们之间移动,将css设置为position:fixedopacity:0,这将保留所有功能但保持输入隐藏,不会占用任何布局空间。我花了最后3个小时搞清楚这一点,但它确实有效!

答案 1 :(得分:15)

除了Nathan Lee的回答

input[type="radio"]:checked{

visibility:hidden

}

是指定已选中单选按钮的选项

input[type="radio"][value="text"]:checked{

visibility:hidden

}

是一个指定已选中单选按钮的选项,其值等于'text'(示例中为'none')

答案 2 :(得分:6)

尝试visibility:hidden这会有效。

HTML:

CSS:

input.checked[type="radio"]{visibility:hidden}

我希望这就是你要找的东西。

答案 3 :(得分:5)

如果你想多次隐藏一个复选框/收音机,那就是制作一个自定义的复选框/收音机。

如果您希望能够专注于输入的标签,请使用opacity:0位置:绝对的宽度:0这使得输入在不占用空间的情况下不可见。

如果你使用display:none或能见度:隐藏它会有类似的效果,但目前最常用的浏览器(MSIE11,Edge,Chrome 60.0.3112.101,Firefox 55)不允许使用键盘来关注元素,这使得它不易访问。

&#13

&#13

.opacity {

position: absolute

opacity: 0

width: 0/* for internet explorer */

}

.visibility {

visibility: hidden

}

.nodisplay {

display: none

}

input[type=checkbox]+label {

font-weight: normal

}

input[type=checkbox]:checked+label {

font-weight: bold

}

input[type=checkbox]:focus+label {

border: 1px dotted #000

}&#13

Press space to (un)check

Press space to (un)check

Press space to (un)check

Press space to (un)check

Press space to (un)check

Press space to (un)check

&#13&#13&#13

答案 4 :(得分:1)

尝试使用:checked选择器:

input[type="radio"]:checked {

display: none

}

答案 5 :(得分:1)

如果您使用过{display:none}并且仍然看到一个空格(如3px左右),那么很可能您的html中的元素之间有空格或换行符,有时会导致渲染器在这些元素之间显示一些像素。

这确实存在问题,如果没有这方面的知识就很难确定问题,但是一旦你知道,你有两个简单的解决方案:

要么删除html中代码之间的空白区域。 (不幸的是,这会使你的html变得更加混乱,所以第二种选择可能会更好。)

或者,在您的css中,将父容器中的font-size设置为0px。

例如:#parent{font-size:0px}然后再次为#parent *{font-size:initial}的父级的所有孩子初始化它。

醇>

#parent{

font-size:0px

display:block

}

#parent *{

font-size:initial

}

.tab-label {

display:inline-block

background: #eee

border: 1px solid

}

[name="tab-group-1"] {

display: none

}

Tab One

Tab Two

Tab Three

答案 6 :(得分:0)

除了其他答案中提到的问题(特别是可访问性问题)之外,display: none的一个警告是,当无线电输入为required时,它还会影响浏览器显示的警告,并且用户没有检查它。

另一方面,opacity: 0和visibility: hidden的一个警告是,单选按钮仍会占用一些空间(而AFAICS width: 0px无效)可能是问题(例如,是否对齐,或者您的单选按钮是否位于

标签内,并且您希望上的:hover背景颜色发生变化,在这种情况下,标签必须覆盖{ {1}}。

一种解决方法是将单选按钮的

设置为position。

fixed

input[type=radio] {

opacity: 10

position: fixed

}

input[type=radio]+label {

background-color: #eee

padding: 1em

}

如摘要所示(使用

radio1

radio2而不是0只是为了了解我们在说什么),使用opacity: 10的单选按钮不再影响标签。

相关资源:纯css3单选框和复选框样式美化效果_css单选框美化-其它代码类资源...

打开CSDN,阅读体验更佳

...菜单、文本域、字段集_陌一一的博客_css单选框和复选框

cols控制的是文本域的列能输入几个字符宽度,rows控制的是行能输入几行,因为这个能输入多少个字符受字体大小和字体类型影响,所以我们一般不这么设置行和列,我们一般是用css设置,还有一个属性是placeholder,就是文本域提示符,属性值不是真...

继续访问

使用纯CSS实现内容的显示隐藏(可用于响应式手机端菜单栏的显示)

initial-scale=1.0">纯CSS实现点击显示隐藏 /* 在手机端正常的操作是默认隐藏,点击菜单的时候显示 */ div { display: none} /* 当单选框被选中的时候显示兄弟元素div */ #btn:checked~div { display: block} /* 设...

继续访问

【jQuery/CSS】显示或隐藏元素

1. CSS分别有display、visibility两个样式可以用于隐藏或显示HTML元素 1) display样式有多个类型的值可选择,默认值为inline,隐藏后会释放元素所占用的页面空间(详见:点击打开链接) style="display: none" document.getElementById("div1").style.display="none"//隐藏

继续访问

js input radio点击事件

html代码: <input type="radio" name="myname" value="1" />1 <input type="radio" name="myname" value="2" />2 js代码: // 点击事件change $('input[type=radio][name=myname]').change(function (...

继续访问

CSS修改html单选框radio样式_AuGnIk的博客_单选框样式修改

采用剪切的方式,让剪切后的尺寸为零,以此隐藏原来的单选框。 3、用伪元素作为新的单选框: /* 未被选中的单选框样式 空心圆圈*/input[type="radio"] + label::before{content:''display:inline-blockvertical-align:middlewidth...

继续访问

CSS 隐藏+对齐+表单篇_believealone的博客

同组的设置相同的name value属性 选框的值 checked属性 让某个单选框默认处于选中态 1.6 多选框 type=checkbox value属性 表示选框的值 多选框因为可能会同时选择多个值, 所以name属性需要注意: 可以name值不同 如果name值想要起成相同...

继续访问

最新发布 前端 -- 单选框内容影响复选框的隐藏与显示 附代码

在网页中这类问题比较常见通过选择一个复选框或者下拉框的内容来改变另外一个复选框或者下拉框的内容(一个选项影响另外一个选项)以下内容主要做一个知识点的探讨,类似功能大同小异。......

继续访问

我在使用Css控制 button 按钮显示与隐藏遇到的问题。

Css :hover选择器遇到的一些问题

继续访问

纯css控制文字显示隐藏_啊呀阿荼的博客_css点击显示隐藏...

纯css控制文字显示隐藏 用到css 伪类 :checked :checked选择器匹配每个已被选中的 input 元素(只用于单选按钮和复选框)。 html 更多 收起 文字文字文字文字文字文字

继续访问

单选框radio控制div的显示和隐藏_知否技术的博客

css({"display":"none"})$("input[type=radio][name='dateType']").change(function(){ var v = $(this).val()if (v =="1"){ $("#limit").hide(800)}else{ $("#limit").show(800)} })...

继续访问

CSS 实现div显示或隐藏的三种方法(display 和 visibility的区别)

一、使用CSS的 display 属性来隐藏或显示div: display 属性规定元素应该 生成的框的类型,可以通过 display:none 来隐藏某一元素。 style="display: none" document.getElementById("typediv1").style.display="none"//隐藏 document.getElementById("typediv1...

继续访问

按钮、元素的显示/隐藏

Eayui的按钮显示/隐藏 这种写法是不占用原有位置 // 隐藏 $('#saveBtn').hide()// 显示 $('#saveBtn').show()display:元素的位置不被占用 //display 不占用位置 // 隐藏 $("#saveBtn").css("display", "none") // 显示 $("#saveBtn").css("display", "")// diaplay 原始写法 //隐藏 document.getElement

继续访问

点击一个单选框时另外一个单选框里的内容属性隐藏掉_使用纯CSS制作一个...

首先,我们先了解下什么是 CSS Checkbox Hack ? CSS Checkbox Hack 允许你通过复选框(Checkbox)是否选中(或单选按钮radio buttons)来控制某些特定的样式。这里运用的是:checked 伪类选择器,其意思就是”如果选中了表单(复选框、单选按钮...

继续访问

单选框样式/自定义单选框/改变单选框border颜色/css单选框

1、首先将原先的单选框隐藏掉。 2、利用label:before 在label的前面加一个元素来模拟单选框的样式。 3、利用:checked css选择器将选中的单选框单独设置样式。 4、具体样式自根据项目手动设置比较灵活。

继续访问

css3新增选择器、伪元素、隐藏元素的方法、visibility: hidden与display:none;的区别 、遮罩层效果、​ 三级菜单制作、选项卡制作——css3知识点总结

一、css3新增选择器 1、兄弟选择器 相邻兄弟选择器 E + F { } 紧挨选择器E后的那个兄弟选择器F /* 相邻兄弟选择器,该代码意思是选择紧邻div后的那一个span元素,且只有第一个span会被选中。 */ div+span{ color: pink} 通用兄弟选择器 E ~ F{ } 选择器E后的所有的兄弟选择器F /* 通用兄弟选择器,选择所有div元素后面的span元素 */ /* 一对.

继续访问

用 CSS 隐藏页面元素的 5 种方法

用 CSS 隐藏页面元素有许多种方法。你可以将 opacity 设为 0、将 visibility 设为 hidden、将 display 设为 none 或者将 position 设为absolute 然后将位置设到不可见区域。 你有没有想过,为什么我们要有这么多技术来隐藏元素,而它们看起来都实现的是同样的效果?每一种方法实际上与其他方法之间都有一些细微的不同,这些不同决定了在一个特定的场

继续访问

css 隐藏元素的方法

占据位置,会被子继承,设置visibilityvisible可以显示子元素,重绘,不会触发绑定事件。占据位置,会被子继承,但是设置opacity1,子元素不会显示,会触发绑定事件。不占据位置,触发回流,不会被子元素继承,不会触发绑定事件。绝对定位,使它偏移可视区域。...

继续访问

热门推荐 单选框radio控制div的显示和隐藏

通过鼠标单击单选框的动作,实现某个div或多个div的显示和隐藏。实例如下: function divClick(){ var show=""var apm = document.getElementsByName("AdPrintMode")for(var i=0i<apm.lengthi++){

继续访问

css去除单选按钮的圆点,CSS3带圆点游动动画的自定义单选框

CSS语言:CSSSCSS确定.checkable-group {background: whiteborder: 2px solid blackborder-radius: 16pxmargin: 0 autoposition: relativewidth: 80%}label {border-bottom: 1px solid blackdisplay: blockpaddin...

继续访问

html css 隐藏和显示按钮

html 隐藏和显示按钮 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div><!--display:block:显示按钮--

继续访问

去掉radio单选按钮的默认样式

在实际项目中radio单选按钮的默认样式是很讨厌的 很多地方用了跟主色调不一样很突兀 我在网上查了查自己改了一个 <dd><label><input type="radio" checked="checked" name="classId" class="radio" value="1">商品咨

继续访问

关于单选框的css和css控制显隐

<label class="edf-line" for="z"><input type="radio" name="pay-radio" value="2" id="z" class="st-one"><i class="checkbox_ico"></i>...

继续访问

两个单选按钮,点击其中一个隐藏或显示其他的div

HTML代码 <div class="am-u-sm-9 am-u-end"><input type="radio" onClick="return diva()" class="tpl-form-input" name="article[activity_publish]" value="1" checked="checked">手动发布 <i...

继续访问

css 隐藏按钮_CSS3隐藏的社交按钮

css 隐藏按钮 Today we'll be looking at some very simple techniques using CSS3 transforms to make social link buttons. Usually you'll see these links all over a site sitting there making a site look ugly. ...

继续访问

css 单选框隐藏

css设置按钮隐藏

写评论

评论

收藏

点赞

分享

display 设置或检索对象是否及如何显示。

display: none 隐藏对象

display:block 除了转换为块级元素之外,同时还有显示元素的意思。

登录后复制

特点: display 隐藏元素后,不再占有原来的位置。

后面应用及其广泛,搭配 JS 可以做很多的网页特效。实际开发场景:

配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛

二、visibility 可见性 (了解)

visibility 属性用于指定一个元素应可见还是隐藏。

visibility:visible  元素可视

visibility:hidden  元素隐藏

登录后复制

特点:visibility 隐藏元素后,继续占有原来的位置。(停职留薪)

如果隐藏元素想要原来位置, 就用 visibility:hidden

如果隐藏元素不想要原来位置, 就用 display:none (用处更多 重点)

三、overflow 溢出(重点)

overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。

属性值 描述

visible 不剪切内容也不添加滚动条

hidden 不显示超过对象尺寸的内容,超出的部分隐藏掉

scroll 不管超出内容否,总是显示滚动条

auto 超出自动显示滚动条,不超出不显示滚动条

一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。

但是如果有定位的盒子, 请慎用overflow:hidden 因为它会隐藏多余的部分。

四、显示与隐藏总结

属性 区别 用途

display 显示 (重点) 隐藏对象,不保留位置 配合后面js做特效,比如下拉菜单,原先没有,鼠标经过,显示下拉菜单, 应用极为广泛

visibility 可见性 (了解) 隐藏对象,保留位置 使用较少

overflow 溢出(重点) 只是隐藏超出大小的部分 1. 可以清除浮动 2. 保证盒子里面的内容不会超出该盒子范围

css

javascript