我有一个带有flexbox的元素
<ul id="myFlexbox">
div#myFlexbox{
display:flex;
}
隐藏和显示后,它变得混乱了。$('#myFlexbox').show();
现在该元素的显示方式为块状而非弹性布局。
<ul id="myFlexbox" style="display: block;">
如何在使用flexbox时使用.hide和.show方法?
show()
方法默认为div
元素添加了display:block
样式。您可以使用jQuery的css()
方法将display
属性更改为flex
:
$('#myFlexbox').css('display', 'flex');
JQuery.show()
不知道你的display: flex;
(不是 flexbox)。相反,尝试添加和删除一个隐藏类。
CSS:
#myFlexbox{
display: flex;
}
.hide{
display: none !important;
}
JS:
$('#myFlexbox').addClass('hide');
$('#myFlexbox').removeClass('hide');
https://jsfiddle.net/p2msLqtt/
否则,我想你必须在CSS完全加载并DOM准备好后执行JS,例如:
<html>
<head>
<!-- CSS -->
</head>
<body>
<!-- BODY PART -->
<!-- SCRIPT TO HIDE AND SHOW -->
</body>
</html>
已更新代码片段并将JavaScript执行设置为domready - 它正在运行:
只需使用
.class{display: none}
.class[style*='display: block']{
display: flex !important;
}
当jQuery添加样式属性时,CSS将被应用,在Chrome和Mozilla上完美运行。
这个想法是创建一个类似于jQuery的show()
函数的自定义函数showFlex()
,并将需要具有display:flex;
属性的元素传递给它。
jQuery解决方案
$.fn.showFlex = function() {
this.css('display','flex');
}
$('#myFlexbox').showFlex();
JavaScript Solution
Object.prototype.showFlex = function() {
this.style.display = 'flex';
}
document.getElementById('myFlexbox').showFlex();
希望这可以帮助您。
$.fn.showFlex = function(){
this.css({'display':'flex'});
}
- d1Mm虽然有点晚(3年),但这是我处理的方法。
我在CSS中为我的div元素,比如 #myDiv,创建了一个规则,如下所示:
#myDiv[style*='block'] {
display: inline-flex !important;
}
它利用了jQuery对DOM的操作,应用了“display:block”。我使用inline-flex是因为我需要它来完成我正在做的事情,但它可以是任何你想要的。这样规则就能更快地应用而不会出现闪烁。
display:none
,然后使用.show()
方法将其显示出来。 - Adam Christiansondisplay: flex
内容。<div id="flexWrapper">
<ul id="myFlexbox"></ul>
</div>
使用 class
方案是可行的。这里还有一种不同的方法:
function showFlex(element) {
var flexContainer = document.getElementById(element);
flexContainer.setAttribute("style", "display: -webkit-box; display: -ms-flexbox; display: -webkit-flex; display: flex;");
}
showFlex( "yourIDhere" );
$('#myFlexbox').show({
start: function() {
$(this).css('display', 'flex');
}
});
$(this).show().css('display', 'flex');
正常显示并将其设置回flex
。