首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏CSS元素而不更改显示属性

隐藏CSS元素而不更改显示属性
EN

Stack Overflow用户
提问于 2018-04-26 21:28:29
回答 6查看 4K关注 0票数 1

我希望保留一个保留初始显示的元素,但这是隐藏的(一开始)。我知道还有用CSS隐藏元素的其他方法,但我也不希望元素首先占用空间。作为一个例子

代码语言:javascript
复制
.target_element {
    display: table;
}

// event happens later...
$('.loader').hide()
$('.target_element').show()

有办法做到这一点吗?我不想将display设置为'none‘,然后返回到JS中的“table”,当我想显示它时。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-04-26 21:34:44

有几种方法。要么您可以让元素position: absoluteposition: fixed不占用任何空间,然后使用任何visibility: hiddenopacity: 0等等。您需要注意的一件事是,如果它们没有display: none,它们仍然可以接收单击事件,所以使用pointer-events: none来停止它。

我喜欢的组合是:

代码语言:javascript
复制
#myElement {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

然后当你想展示它时:

代码语言:javascript
复制
$("#myElement").css({
  'position': 'static',
  'opacity': 1,
  'pointer-events': 'all'
})

这里的好处是您可以转换不透明度,而不是visibilitydisplay

票数 4
EN

Stack Overflow用户

发布于 2018-04-26 21:37:30

除非我误解了你的问题,否则display:none;绝对是该走的路。如果您的问题是.show()将其切换为display:block;,那么只需使用jQuery将类添加到元素。

代码语言:javascript
复制
setTimeout(function() {
  $('table').addClass('visible');
}, 2000);
代码语言:javascript
复制
table {
  display:none;
}
  table.visible {
    display:table;
  }
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr><td>Test</td><td>Test</td></tr>
  <tr><td>Test</td><td>Test</td></tr>
  <tr><td>Test</td><td>Test</td></tr>
  <tr><td>Test</td><td>Test</td></tr>
</table>

票数 1
EN

Stack Overflow用户

发布于 2018-04-26 21:33:08

您想隐藏元素多长时间?

这样做有多种方法,您可以在浏览器中设置cookie,也可以使用Javascript函数(如setTimeout )在固定时间后显示元素。

代码语言:javascript
复制
setTimeout( function() {
   $("#your_element").show();
   }, 5000); // Time in milliseconds
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50052090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档