简体   繁体   English

有没有办法只在css之后在li之后显示div?

[英]Is there a way to display div after li only with css?

I have the following tabs structure: 我具有以下标签结构:

<ul>
    <li id="first">First header</li>
    <li id="second">Second header</li>
    <li id="third">Third header</li>
    <li id="fourth">Fourth header</li>
</ul>
<div id="first_div">First content (related to first li)</div>
<div id="second_div">Second content (related to second li)</div>
<div id="third_div">Third content (related to third li)</div>
<div id="fourth_div">Fourth content (related to fourth li)</div>

On web view it displays correctly (with some simple script: displaying a div depending on selected li). 在Web视图上,它可以正确显示(使用一些简单的脚本:根据选定的li显示div)。

But on the print view this should be displayed in the following structure: 但是,在打印视图中,它应该以以下结构显示:

First header
First content

Second header
Second content

If I add display: block on the whole structure it apparently firstly displays li s, then div s. 如果在整个结构上添加display: block ,则显然首先显示li s,然后显示div

Is there a way to form required view only with css? 有没有一种方法只能使用CSS形成所需的视图?

No, without duplicating content its not possible. 不,不复制内容是不可能的。 However you can achieve this as follows: 但是,您可以通过以下方式实现此目的:

HTML: HTML:

<ul class="headers-list">
    <li class="first">First header</li>
    <li class="second">Second header</li>
    <li class="third">Third header</li>
    <li class="fourth">Fourth header</li>
</ul>

<div class="first print-header">First header</div>
<div id="first_div">First content (related to first li)</div>

<div class="second print-header">Second header</div>
<div id="second_div">Second content (related to second li)</div>

<div class="third print-header">Third header</div>
<div id="third_div">Third content (related to third li)</div>

<div class="fourth print-header">Fourth header</div>
<div id="fourth_div">Fourth content (related to fourth li)</div>

CSS: CSS:

.print-header {
    display: none;
}

@media print {
    .headers-list {
        display: none;
    }
    .print-header {
        display: block;
    }
}

You can use data-attributes if it is just about to show a title . 如果要显示标题,则可以使用data-attributes

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes

 /* @media print { */ ul { display:none; } div:before { content:attr(data-title); display:block; font-size:1.4em; margin:1em 0 0.25em; background:gray; } /*}*/ div { background:lightgray; } 
 <ul> <li id="first">First header</li> <li id="second">Second header</li> <li id="third">Third header</li> <li id="fourth">Fourth header</li> </ul> <div id="first_div" data-title="My First Header title">First content <br/>(related to first li)</div> <div id="second_div" data-title="My Second Header title">Second content <br/>(related to second li)</div> <div id="third_div" data-title="My Third Header title">Third content <br/>(related to third li)</div> <div id="fourth_div" data-title="My Fourth Header title">Fourth content <br/>(related to fourth li)</div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM