- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑这些元素:
<div class="accordion-content">
<div><?php the_field('f_1'); ?></div>
<div><?php the_field('f_2'); ?></div>
<div><?php the_field('f_3'); ?></div>
<div><?php the_field('f_4'); ?></div>
<div><?php the_field('f_5'); ?></div>
<div><?php the_field('f_6'); ?></div>
<div><?php the_field('f_7'); ?></div>
<div><?php the_field('f_8'); ?></div>
<div><?php the_field('f_9'); ?></div>
<div><?php the_field('f_10'); ?></div>
<div><?php the_field('f_11'); ?></div>
</div>
和样式
.accordion-content div:empty{display: none}
.accordion-content div:nth-of-type(odd) {
background-color:#f0f0f1;
}
.accordion-content div:nth-of-type(even){
background-color:#e1e1e4;
}
静态 fiddle 示例链接 http://codepen.io/whispering_jack/pen/yMWoZj
如果用户在字段中输入数据,它将显示内容,否则如果字段为空,则不会显示。
我想要实现的是条纹的交替颜色,但当前的 css 也针对未显示的元素,因此如果所有字段都没有填充颜色将不会交替。
任何人都可以提出一个解决方案来仅针对显示的 div 交替背景色吗?欢迎使用 CSS 或 SCSS 选项,js 最后一招。
谢谢。
编辑:仍在寻求一些帮助。
最佳答案
好的,经过一些实验并解决相关问题后,解决方案是使用 jquery 遍历元素,如果跨度为空,则将其从 dom 中删除。然后,这允许触发 div:empty 类。
成功!
编辑:根据要求提供示例代码,适用于 Wordpress 的超轻型动态 Accordion ,可与高级自定义字段一起使用,轻松将其变成插件。
html
<div class="accordion-content default">
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span><?php the_field(''); ?></span><span><?php the_field(''); ?></span></div>
<div><span>Years on Council</span><span><?php the_field(''); ?></span></div>
</div>
JQuery
$(document).ready( function($) {
//for this element, iterate each object
$('.accordion-content div').each(function(i, obj) {
//the object
var $this = $(this);
//if the object is empty
if ($this.find('span:empty').length) {
//remove from dom (firing .element:empty:{display:none})
$this.remove();
};
});
//Hide all the other panels except the first
$(".accordion-content:not(:first)").hide();
//onclick
$('#accordion').find('.accordion-toggle').click(function(){
//Expand or collapse this panel
$(this).next().slideToggle('fast');
//And, Hide the other panels
$(".accordion-content").not($(this).next()).slideUp('fast');
});
});
//set the background color
var color="rgba(255,222,0,";
//change the background color of .element
function repaint() {
//how many of this class?
var all = $('.accordion-toggle').length,
//opacity 1 - 10 divided by no. elements
total = 10/all;
//iterate over each element
$('.accordion-toggle').each(function(i){
//countdown the elements and for each divide by total element by 10
var opacity = (total*(all-i))/10,
//join $opacity to $color and finish it
newTone = color+opacity+")";
//set the background color of the element to the new color
$(this).css('background-color',newTone)
})
}
repaint()
CSS
/*--------------------------------------------------------------
## LIGHTWEIGHT ACCORDIAN
--------------------------------------------------------------*/
#accordion{width:100%;margin: 0 20px}
#accordion .type-freeman{margin-bottom:0;}
.accordion-toggle {cursor: pointer;}
.accordion-content {display: none;}
.accordion-content.default {display: block;}
.accordion-toggle{
margin:0;
padding:20px 20px;
}
.accordion-content div{margin:0;padding:16px 20px;}
.accordion-content div:empty{display: none}
.test{display: none}
.accordion-content div:nth-of-type(odd) {
background-color:#f0f0f1;
}
.accordion-content div:nth-of-type(even){
background-color:#e1e1e4;
}
.accordion-content div span:first-of-type{
text-align: left;
display: inline-block;
width: 50%
}
.accordion-content div span:last-of-type{
text-align: right;
display: inline-block;
width: 50%
}
关于css - 设置奇数和偶数兄弟元素的样式 - 不包括设置为显示 :none 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43270315/
我的目标是运行类似 bro --iface 的命令并只获取 conn.log,但我无法从 Bro 文档或联机帮助页中得知如何执行此操作。 谢谢。 最佳答案 这让你继续: bro -i -b b
我正在使用以下 jQuery 来更改无序列表中元素的类。这似乎不是实现该效果的最有效方法。有更好的写法吗? $(function() { $('nav li a').click( functi
我有一个看起来像这样的导航栏 Services Work Contact 当我 :hover 一项时,我想更改其他两项的样式。我可以使用什么 CSS 选择器? 最佳答案 您
我正在寻找一种方法来选择包含特定图像的列的行内具有特定名称属性的所有输入。 下面的代码是一个说明性示例:
假设我有以下 HTML: 我想在鼠标悬停在元素上时对图标应用一些规则,可以用以下 CSS 描述: .navigation__item__icon { color: black; } .n
我的 div text-button 没有与我在其兄弟 div 下想要的正确边距对齐。我将 position: absolute; 设置到位,因为每次我将其设置为相对位置时,jQuery 动画都不起作
这个问题在这里已经有了答案: CSS margin terror; Margin adds space outside parent element [duplicate] (7 个答案) 关闭
如果我有 3 个 NSManagedObjectContext。 一个。是根上下文。 B.是一个后台保存上下文,解析一个JSON后生成NSManagedObjects C.是在 NSFetchedRe
我在容器中有三个 div:http://jsfiddle.net/fBe9y/ 一个div内容很多。如何让内容较少的其他两个 div 与最长的 div 的高度匹配? 我尝试将 height: 100%
我正在尝试通过单击另一个元素对一个元素执行一个简单的 toggleClass。有多个元素具有相同的类,我只想切换同级/最近的元素。我相信我从根本上理解了针对 parent / child / sibl
我正在使用 AngularJS 开发一个小应用程序。我的项目包含一个包含 3 个 View 的 Body.html 文件:SideMenu、Header 和 Content,每个 View 都有自己的
在 CSS 方面,我不认为我是个笨蛋,但这个就是我。我的想法是我需要一个父元素,两侧有两个 float 子元素。我希望 parent 的高度与 child 的高度一样高,并让 child 的高度变得相
我有两个 span(s) 在父级 div 中彼此相邻。 我希望第二个 span 显示在最左边,然后是第一个 span。 (注意:由于某些原因,我不能简单地移动第二个跨度来代
今天跟大家分享下selenium中根据父子、兄弟、相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点
这是 HTML 的结构:
我在一个包装器中并排放置了两个 div。其中一个 div 的内容比另一个多,我希望第二个 div 填充包装的垂直空间。 .wrapper { height: 50%; width: 50%;
我的网站顶部有一个带有此 CSS 的菜单: .menu { width: 100%; display: block; float: left; } 在里面,我有几个 div: .menu .menu-
我有两个 div 元素,第一个 div 中有一个按钮,如下所示。 Click 下面是我的 JavaScript 代码。 function nextDiv(el
两个同级 div(#one 和 #two),每个都包含一些文本。 我移动#two margin-top 为负,预计它会覆盖 #one , 但当文本位于 #one 前面时,背景位于下方。 只有在 #on
我有一个容器 div,它有一个 float 的左侧导航 Pane 和一个右侧的内容 Pane : CSS: body { text-align: cent
我是一名优秀的程序员,十分优秀!