HTML 元素 - 不同类型,但共享相同的类名 - 行为异常

标签 html css

所以我正在构建一个网站,其中有几个页面描述(幻想)人物和地点。为此,几类页面都有一个 profilebox其中包括标题、图像和带有一些摘要数据的表格等内容。

此类框的 HTML 如下所示:

<profilebox class="red">
  <p><i>His Majesty</i><br><span class="big-and-strong">The King</span>
  </p>
  <figure class="pbox"><img class="pbox" src="../images/armsroyal.svg"> 
  </figure>
  <table class="pbox">
    <tr>
      <td>Surname</td>
      <td>N/A</td>
    </tr>
    <tr>
      <td>Forename</td>
      <td>N/A</td>
    </tr>
    <tr>
      <td>Rank</td>
      <td>King</td>
    </tr>
    <tr>
      <td>Addressed As</td>
      <td>&lsquo;&lsquo;Your Majesty&rsquo;&rsquo;</td>
    </tr>
  </table>
</profilebox>

而 CSS 看起来像这样:

profilebox {
  display: block;
  margin-top: 1em;
  margin-bottom: 1em;
  margin-left: 1em;
  margin-right: 0em;
  width: 400px;
  float: right;
  text-align: center;
  padding: 1em;
  border-color: black;
  border-style: solid;
  border-width: 0px 0px 0px 5px;
}

table {
  border-collapse: collapse;
  width: 600px;
}

.mini {
  width: 400px;
}

.maxi {
  width: 100%;
}

.pbox {
  width: 100%;
}

img {
  margin: 1em;
}

.pbox {
  display: block;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

figure.pbox {
  width: 100%;
}

现在 pbox表格类的宽度设置为 100%,因此配置文件框中的表格应该填满其父元素,对吗? (我能感觉到“错了!”。)然而,这是 Chromium 中页面的实际样子:

Table too narrow

如果我替换 <table class="pbox"><table class="maxi"> ,我得到了想要的结果:

Table just right

但是 maxipbox表的类是相同的!知道这里发生了什么吗?

最佳答案

我曾假设 - 错误地 - 如果你输入类似的内容:

CSS

element1 {
  property-a: setting1;
}

.class-name {
  property-b: setting2;
}

element2 {
  property-c: setting3;
}

.class-name {
  property-d: setting4;
}

HTML

  <element2 class="class-name"/>

然后 element2 将具有属性:

  • property-c: setting3;
  • 属性-d: setting4;

事实上,.class-name所有 定义都将被应用,因此element2 将具有属性:

  • property-b: setting2;
  • property-c: setting3;
  • 属性-d: setting4;

如果我们修改CSS如下:

element1 {
  property-a: setting1;
}

element1.class-name {
  property-b: setting2;
}

element2 {
  property-c: setting3;
}

element2.class-name {
  property-d: setting4;
}

然后一切正常!

关于HTML 元素 - 不同类型,但共享相同的类名 - 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232715/

相关文章:

html - 如何删除单词后的 4 像素填充?

CSS 循环第 n 个子模式

html - 当 'top' 值更改时,文本不会留在父 div 中

html - Blueimp 文件上传 : single file upload

css - 响应式图片不适合手机屏幕

jquery - 当页面加载鼠标悬停自动工作时

javascript - Angular Material 日期选择器位置错误,Chrome 除外

javascript - 是否可以使用 AJAX (Javascript) 与 Gmail 交互?

javascript - 当我使用 REACT/REDUX 创建新帖子时,API 会刷新并且之后不允许新帖子

html - 没有 `&lt;meta&gt;` 属性的 RDFa `name` 是否与 HTML5 兼容?