我想保留一个元素,保留初始显示,但隐藏(首先)。我知道还有其他方法可以使用CSS隐藏元素,但是我也不希望元素首先占用空间。作为一个例子
.target_element {
display: table;
}
// event happens later...
$('.loader').hide()
$('.target_element').show()
有没有办法实现这个目标?我不想将显示设置为“没有”'然后回来把它设置为表#39;在某些JS中我想展示它。
答案 0 :(得分:2)
有几种方法。你可以制作元素position: absolute
或position: fixed
,这样它就不会占用任何空间,然后使用visibility: hidden
,opacity: 0
等任何一个,等等。 #39;需要注意的是,如果他们没有display: none
,他们仍然可以收到点击事件,因此请pointer-events: none
停止点击事件。
我的首选组合:
#myElement {
position: absolute;
opacity: 0;
pointer-events: none;
}
然后当你想要展示它时:
$("#myElement").css({
'position': 'static',
'opacity': 1,
'pointer-events': 'all'
})
此处的奖励是您可以转换不透明度,而不是visibility
或display
。
答案 1 :(得分:1)
display:none;
绝对是要走的路,除非我误解了你的问题。如果您的问题是.show()
将其切换为display:block;
,那么只需使用jQuery将类添加到元素中。
setTimeout(function() {
$('table').addClass('visible');
}, 2000);
table {
display:none;
}
table.visible {
display:table;
}
<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>
答案 2 :(得分:0)
您想隐藏元素多长时间?
有多种方法可以执行此操作,您可以在浏览器中设置cookie,也可以使用Javascript函数(如 setTimeout )在固定的时间段后显示元素。
setTimeout( function() {
$("#your_element").show();
}, 5000); // Time in milliseconds
答案 3 :(得分:0)
使用包装器隐藏和显示您的表格。
<强> HTML 强>
<div class="target_wrapper">
<div class="target_element"></div>
</div>
<强> CSS 强>
.target_element {
display: table;
}
.target_wrapper {
display: none;
}
<强> JS 强>
$('.target_wrapper').show()
<强>解释强>
.show()
设置display: block;
。要避免对表的属性进行查询,请使用不依赖于该属性的包装器。只要您触发$('.target_wrapper').show()
并正确显示您的表格,就会立即显示它。
答案 4 :(得分:0)
听起来最简单的解决方案是使用隐藏可见性
.target_element {
visibility: hidden;
}
根据评论,您似乎不希望影响整体布局,因此这会使项目“隐身”,但仍然会占用。
答案 5 :(得分:0)
#include <iostream>
template <typename...>
struct lambda_overload;
template <typename L>
struct lambda_overload<L> : public L
{
lambda_overload (L l) : L{std::move(l)}
{ };
using L::operator();
};
template <typename L0, typename ... Ls>
struct lambda_overload<L0, Ls...> : public L0, public lambda_overload<Ls...>
{
lambda_overload (L0 l0, Ls ... ls)
: L0{std::move(l0)}, lambda_overload<Ls...>{std::move(ls)...}
{ };
// backup version (ever defined!)
template <typename ... As>
auto func (long, As && ... as)
{ return lambda_overload<Ls...>::operator()(std::forward<As>(as)...); }
// preferred version (defined only if operator() defined for L0 type)
template <typename ... As>
auto func (int, As && ... as)
-> decltype( std::declval<L0>()(std::forward<As>(as)...) )
{ return L0::operator()(std::forward<As>(as)...); }
template <typename ... As>
auto operator() (As && ... as)
{ return func(0, std::forward<As>(as)...); }
};
template <typename ... Ls>
auto make_lambda_overload (Ls && ... ls)
{ return lambda_overload<Ls...>{ std::forward<Ls>(ls)... }; }
int main()
{
auto l1 = [&](auto const & t) -> decltype((void)t.size())
{ std::cout << "-- with size() version - " << t.size() << std::endl; };
auto l2 = [&](auto const & t)
{ std::cout << "-- generic version (also no size())" << std::endl; };
auto lo = make_lambda_overload(std::move(l1), std::move(l2));
lo(std::string{"0"}); // print "with size() version - 1
lo(1); // print "generic version (also no size()="
}
这个怎么样?