【问题标题】:Styling dynamic content where there isn't always content在不总是有内容的情况下设计动态内容
【发布时间】:2012-05-15 21:03:30
【问题描述】:

好的,所以我的标题很糟糕。反正-

我正在尝试设计一个简单的“产品信息”模板。我使用的 CMS 从标签中提取动态产品信息。看起来像这样 - div 的样式被设置为两列:

 <div class="specslabel">

        <strong>

        {rs_size_lbl} <br />
        {rs_material_lbl} <br />
        {rs_application_lbl} <br />
        {rs_fitting_system_lbl}

        </strong>  

        </div>  

        <div class="specs">

        {rs_size} <br />
        {rs_material} <br />
        {rs_application} <br />
        {rs_fitting_system}    


    </div>

当所有这些标签都正确提取信息时,一切正常。但是,有时这些字段之一(它从 CSV 文件中提取)是空的。标签是智能的,如果相应字段中没有内容,则不会显示 {_lbl}(字段标签)内容。然后是空行,明显是换行的原因。

如果我不使用换行符,“_lbl”标签会全部堆叠起来(因为标签通常是短文本)。是否有另一种设置样式的方法,以便在没有绘制内容时没有换行符 - 但是当有内容时,有换行符?

【问题讨论】:

    标签: html css templates joomla


    【解决方案1】:

    重写您的 HTML 以将标签与项目放在一起。

    <div><span class="specslabel">{rs_size_lbl}</span><span class="specs">{rs_size}</span></div>
    <div><span class="specslabel">{rs_material_lbl}</span><span class="specs">{rs_material}</span></div>
    <div><span class="specslabel">{rs_application_lbl}</span><span class="specs">{rs_application}</span></div>
    <div><span class="specslabel">{rs_fitting_system_lbl}</span><span class="specs">{rs_fitting_system}</span></div>
    

    然后,将你的 CSS 定义为

    .specslabel {
        display: inline-block;
        width: 45%;
    }
    
    .specs {
    }
    

    会发生什么,当标签和数据都没有得到任何东西时,您的该行项目的 html 将呈现为&lt;div&gt;&lt;/div&gt;,默认情况下没有高度。因此,当 div 中没有任何内容可显示时,空白将被折叠。

    【讨论】:

    • 这似乎也是个好主意。我是个业余爱好者,所以我会尝试所有这三种方法——至少我会学会三种可接受的方法。
    • 这个答案和@Chris_Doggett 是一样的,只是他的HTML 比我发布的有更多的空白。我发现,虽然在大多数情况下空格会被忽略(全部折叠成一个空格),但有时它会对格式问题造成严重破坏。
    【解决方案2】:

    我建议将您的标记更改为以下内容:

    <div class="specs">
      <div class="spec">
        <span class="label">{rs_size_lbl}</span>
        <span class="data">{rs_size}</span>
      </div>
      <div class="spec">
        <span class="label">{rs_material_lbl}</span>
        <span class="data">{rs_material}</span>
      </div>
      <div class="spec">
        <span class="label">{rs_application_lbl}</span>
        <span class="data">{rs_application}</span>
      </div>
      <div class="spec">
        <span class="label">{rs_fitting_system_lbl}</span>
        <span class="data">{rs_fitting_system}</span>
      </div>
    </div>
    

    然后将 span.label 和 span.data 样式设置为具有固定宽度,以便它们正确对齐。如果它们是空的,它们应该是不可见的。

    【讨论】:

    • 这看起来也很完美。我也会试试这个看看它是如何工作的。
    【解决方案3】:

    如果您按照以下方式对其进行格式化,则没有问题:

    <style>
        strong span { float:left; clear:left; }
    </style>
    
    <strong>
    
        <span>{rs_size_lbl}</span>
        <span>{rs_material_lbl}</span>
        <span>{rs_application_lbl}</span>
        <span>{rs_fitting_system_lbl}</span>
    
    </strong>  
    

    否则,您需要更改服务器脚本以适当地输出&lt;br/&gt; ...

    【讨论】:

    • (编辑-没关系,我是个白痴)Xander-你太棒了。谢谢朋友!
    • 请注意font-size 和保证金问题;如果最终每个标签和相关项目的高度略有不同,这样做可能会破坏垂直对齐。
    猜你喜欢
    • 2018-11-19
    • 2015-03-05
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2013-01-25
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多