将不同的类添加到标签和值并在同一行输出

Posted

技术标签:

【中文标题】将不同的类添加到标签和值并在同一行输出【英文标题】:Add different classes to label and value and output on same line 【发布时间】:2020-06-08 21:29:36 【问题描述】:

我正在尝试向标签和值添加不同的类,以便我可以对它们进行不同的样式设置,但需要做两件事。

    添加一条在两者下方延伸的边框底部 在同一行显示标签名称和值

这是我正在使用的 php

$output .= '<div class="property-details">';

foreach ( (array) $this->property_details as $label => $key ) 
$output .= sprintf( '<div class="label">%s</div><div class="value">%s</div>', $label, $value ) );
        
$output .= '</div>';
return $output;

这给了我这个:

价格:

10,000,000

我需要的是这个

价格:10,000,000

名称:

所以每个标签和值都内联显示

【问题讨论】:

【参考方案1】:

这感觉更像是一个CSS 问题:我会使用一个弹性容器来设置输出的样式以容纳所有property-details 项目,并且每个property-details 上也有一个弹性容器。外部容器使用 flex-direction: column 创建堆叠的垂直对齐方式,内部 flex 项使用 flex 的默认行方向将两个 divs 保持在同一行。

.property-details-container 
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;


.property-details 
  display: inline-flex;
  align-items: center;
  border-bottom: 1px solid;
  margin-bottom: 0.5rem;


.property-details .value 
  font-weight: bold;
  padding-left: .5rem;
<div class="property-details-container">
  <div class="property-details">
    <div class="label">Price</div>
    <div class="value">10,000</div>
  </div>
  <div class="property-details">
    <div class="label">Year Built</div>
    <div class="value">1982</div>
  </div>
</div>

jsFiddle

【讨论】:

是的,但它也涉及 PHP,因为我需要修改默认标记。 @Dev 没错,您必须将包装 div 添加到 PHP。我说,保持内联样式干净并添加更多CSS。这就是您正确扩展事物的方式。 同意,但是您如何看待这个答案***.com/a/60389750/4643292,一旦您将每个细节都包装在一个 div 中,它就会起作用? 另外,如果我想为每个标签和值的每个细节添加一个唯一的类怎么办?我如何使用 foreach 做到这一点? @Dev 我的 PHP 技能确实很差。但似乎你可以这样做:***.com/a/11852517/949217【参考方案2】:

试试这个..

$output .= '<div class="property-details">';

foreach ( (array) $this->property_details as $label => $key ) 
$output .= sprintf( '<div class="label" style="display: inline-block;">%s</div><div class="value" style="display: inline-block;">%s</div>', $label, $value ) );
        
$output .= '</div>';
return $output;

除非您使用 Bootstrap 之类的库,否则我鼓励您改用 span

$output .= '<div class="property-details">';

foreach ( (array) $this->property_details as $label => $key ) 
$output .= sprintf( '<span class="label" >%s</span ><span class="value">%s</span >', $label, $value ) );
        
$output .= '</div>';
return $output;


对多行使用br 标签:

$output .= '<div class="property-details">';

foreach ( (array) $this->property_details as $label => $key ) 
$output .= sprintf( '<span class="label" >%s</span ><span class="value">%s</span > <br>', $label, $value ) );
        
$output = substr_replace($output , '', strrpos($output , '<br>'), 4);
$output .= '</div>';
return $output;

【讨论】:

这两个问题是它们在同一行显示所有标签和值。我会更新问题。 @Dev 对多行使用br 标签。查看我的更新答案 更好,但不允许我在两者下方添加连续边框。【参考方案3】:

你可以试试这个:

$output .= '<div class="property-details">';

foreach ( (array) $this->property_details as $label => $key ) 
$output .= sprintf( '<span class="label">%s</span><span class="value">%s</span>', $label, $value ) );
        
$output .= '</div>';
return $output;

【讨论】:

以上是关于将不同的类添加到标签和值并在同一行输出的主要内容,如果未能解决你的问题,请参考以下文章

添加以不同标签显示的列表框项目和值(在不同表单之间)

在asp.net的html表中添加下拉列表

从 XML 中提取多个值并在一行中返回

在同一行打印多个值

PB数据窗口(dw控件)中焦点在同一行不同字段修改数据后切换到同一行的不同字段后会触发哪些事件?<->

是否可以将控制台中的文本颜色和背景颜色更改为不同的颜色,同时仍然在同一行上? C++