淘先锋技术网

首页 1 2 3 4 5 6 7

我有一些渲染的HTML(见下文)。我希望第一个跨度元素的宽度为300像素。

<div style="display:inline-block">
  <div id="songFields">
    <div>
      <label for="Description">Title</label>
      <span class="k-input k-textbox selectText k-input-solid k-input-md k-rounded-md" style="">
        <input class="selectText k-input-inner" id="Description" name="Description" value="Shy Boy" data-role="textbox" aria-disabled="false" autocomplete="off" style="width: 100%;">
      </span>
      <script>
        kendo.syncReady(function() {
          jQuery("#Description").kendoTextBox({
            "value": "Shy Boy"
          });
        });
      </script>
      <span class="field-validation-valid" id="Description_validationMessage" style="padding-left:20px"></span>
    </div>
    <!-- Continued -->
  </div>
</div>
    </div>

我创建了一个非常特殊的样式规则,将宽度设置为300像素。

#songFields > div > span.k-input.k-textbox {
    width: 300px;
}

在不同的css文件中碰巧有另一个通用规则:

.k-input,.k-picker {
    margin: 0;
    padding: 0;
    width: 100%;

Chrome认为我的样式规则适用于该元素,但由于不太明确的样式规则,决定将宽度设为100%!(见Chrome开发工具中的图片)

enter image description here

如果我进入kendo.common-bootstrap.css并注释掉width:100%规则,那么我的规则适用。但是我的规则仍然适用,因为我的选择器# songFields & gtdiv & gtk-textbox比。k-输入,。k-picker。为什么Chrome要应用不太明确的选择器的规则?

我在Firefox中测试过,Firefox如我所料使用了我的规则。这是Chrome bug吗?

# # #这个问题是由于我忘记在这个问题中加入一个CSS规则。 元素的显示设置为表格、表格行和表格单元格。 在这种情况下,最宽的元素将设置所有其他元素。

这是我所经历的一个简单的例子。

<div style="display:table">
  <div style="display:table-row">

    <span style="border:1px solid black;width:200px;display:table-cell">
        This has a width set to 200px
    </span>
  </div>
   <div style="display:table-row">
    <span style="border:1px solid black;width:400px;display:table-cell">
            This has a width set to 400px
    </span>
  </div>
</div>