Как отобразить вывод HTML в строках

#php #html #jquery

#php #HTML #jquery

Вопрос:

Там, где я использую класс div, после каждого оператора if есть разрыв строки, и строки не выровнены.

Как я могу правильно выровнять вывод php, чтобы обе строки были выровнены по горизонтали.

 function display_selected_variation_custom_field_js(){
        ?>
        <script type="text/javascript">
        (function($){
            var a = '.custom_variation-text-field', b = $(a).html();
    
            $('form.cart').on('show_variation', function(event, data) {
                outputHtml = '';
    
                if( data.model ) {
                    outputHtml  = '<div align="left"> <span><strong><?php _e("Model"); ?><strong>: ' data.model '<span></div>';
                }
                if( data.wattage ) {
                    outputHtml  = '<div align="center"><span><strong><?php _e("Wattage"); ?><strong>: ' data.wattage '<span></div>';
                }
                if( data.lumen ) {
                    outputHtml  = '<div align="right"><span><strong><?php _e("Lumen"); ?><strong>: ' data.lumen '<span></div>';
                }
                if( data.material ) {
                    outputHtml  = '<div align="left"><span><strong><?php _e("Material"); ?><strong>: ' data.material '<span></div>';
                }
                if( data.dimension ) {
                    outputHtml  = '<div align="center"><span><strong><?php _e("Dimension"); ?><strong>: ' data.dimension '<span></div>';
                }
                if( data.year ) {
                    outputHtml  = '<div align="right"><span><strong><?php _e("Year"); ?><strong>: ' data.year '<span></div>';
                }
                if( outputHtml ) {
                    $(a).html(outputHtml);
                }
            }).on('hide_variation', function(event) {
                $(a).html(b);
            });
        })(jQuery);
        </script>
 

Текущий вывод:

введите описание изображения здесь Ожидаемый результат: введите описание изображения здесь

Комментарии:

1. можете ли вы показать исключенный вывод?

2. Да — Пожалуйста, посмотрите ссылку, которая показывает ожидаемый результат: imgur.com/a/xMuWIG9

Ответ №1:

Вы можете предоставить некоторые внешние divs своим данным, потому что ваш код отображает все в отдельной строке, так что это поможет различать их.

Демонстрационный код :

 var a = '.custom_variation-text-field';
//suppose data look like this ..
var data = {
  "model": 13,
  "lumen": "somehtnf",
  "material": 122,
  "dimension": 12,
  "year": 1333,
  "wattage": 33
}

var outputHtml = '';
//give some outer div to differntiate them
var outer = "<div class='outer'>"
if (data.model) {
  outer  = '<div align="left"><span><strong>Model</strong>: '   data.model   '</span></div>';
}
if (data.wattage) {
  outer  = '<div align="center"><span><strong>Wattage</strong>: '   data.wattage   '</span></div>';
}
if (data.lumen) {
  outer  = '<div align="right" ><span><strong>Lumen</strong>: '   data.lumen   '</span></div>';
}
outer  = outputHtml   "</div><div class='outer'>" //close it 
if (data.material) {
  outer  = '<div align="left"><span><strong>Material</strong>: '   data.material   '<span></div>';
}
if (data.dimension) {
  outer  = '<div align="center" ><span><strong>Dimension</strong>: '   data.dimension   '</span></div>';
}
if (data.year) {
  outer  = '<div align="right" ><span><strong>Year</strong>: '   data.year   '</span></div>';
}
outer  = "</div>"
if (outer) {
  $(a).html(outer);
} 
 .outer>* {
  display: inline-block;
  width: 150px;
  height: 30px;
  border-bottom: 2px solid;
} 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="custom_variation-text-field">

</div> 

Ответ №2:

Да, <div> по умолчанию являются тегом блока, а не встроенным тегом.

Самый простой способ сделать это — использовать <table> . В настоящее время это не «круто», но это решает проблему. Другой способ — использовать атрибут «float» CSS:

 <div style='clear: both; float: left'>Left side</div>
<div style='float: center'>Center</div>
<div style='float: right'>Right side</div>
 

Вы, вероятно, захотите использовать классы вместо указания CSS, подобного этому.

Обратите внимание, что ваши вторые <strong> и <span>теги должны быть закрывающими тегами: </strong> и</span> , хотя я не уверен, почему <span>они вообще существуют.

Комментарии:

1. У меня это не сработало. Оба значения <div style=’float: center’>Center</div> выровнены по левому краю и по новым строкам. Каким будет решение <table>?

2. <table borderwidth=0><tr width='100%'><td width='33%' align=left>Left side</td><td width='33%' align=center>Center</td><td width=33%' align=right>Right side</td></tr></table> . Атрибут «width» нужен только для первой строки.