CSS:垂直显示 table 行

CSS: displaying table rows vertically

我正在 Rails 上的 Ruby 中编写一个非常基本的脚本来显示来自 table 的记录,关于 CSS 我正在使用 Flex 但是它正在影响所有项目的显示(水平),这是结果:

绿色行是 header,下一行包含数据,HTML 代码如下所示:

html, body{
         margin: 0;
         background-color: #3a3a3a;
     }
    
     body *{
         color: white;
         font-family: 'Segoe UI', Tahoma, Geneva, sans-serif;
         display: flex;
         justify-content: center;
         flex-direction: row;
         border-radius: 5px;
         align-items: center;
     }
    
     div {
         margin-left: 20px;
     }
    
     input {
         color: black;   
     }
    
     h1{
        font-size: 2.5em;
    }
    .description{
        background-color: rgba(9, 0, 0, 0.199);
        padding: 2em;
        font-size: 2em;
        max-width: 600px;
    }
    .meta *{
        display: flex;
        background-color: yellow;
    }
    .links *{
        margin-top: 10px;
        color: white;
        border-radius: 5px;
        font-weight: bold;
        background-color: rgb(31, 55, 133);
        margin: 5px;
        padding: 5px;
        text-decoration: none;
    }
    
    #tabledata {
        font-family: Arial, Helvetica, sans-serif;
        border-collapse: collapse;
        width: 100%;
      }
      
      #tabledata td, #tabledata th {
        border: 1px solid #ddd;
        padding: 8px;
      }
      
      #tabledata tr:nth-child(even){background-color: #f2f2f2;}
      
      #tabledata tr:hover {background-color: #ddd;}
      
      #tabledata th {
        padding-top: 12px;
        padding-bottom: 12px;
        text-align: left;
        background-color: #04AA6D;
        color: white;
      }
 <p id="notice"><%= notice %></p>
    
    <h1>Productlines</h1>
    
    <table id="tabledata">
      <thead>
        <tr>
          <th>Product Name</th>
          <th>Available?</th>
          <th colspan='3'>Options</th>
        </tr>
      </thead>
    
      <tbody>
        <% @productlines.each do |productline| %>
          <tr>
            <td><%=productline.name %></td>
            <td><%=productline.isactive %></td>        
            <td class="links"><%= link_to 'Show', productline %></td>
            <td class="links"><%= link_to 'Edit', edit_productline_path(productline) %></td>
            <td class="links"><%= link_to 'Destroy', productline, method: :delete, data: { confirm: 'Are you sure?' } %></td>
          </tr>
        <% end %>
      </tbody>
    </table>
    
    <br>
    
    <span class="links"><%= link_to 'New Productline', new_productline_path %></span>


     

我的问题是:是否可以在垂直模式下显示 table 内的行? 非常感谢您的评论。

问题是您在使用 body * 选择器时将 flex 应用于 body 中的每个 HTML 元素。

flex显示的默认设置属性是水平布局flex容器中的元素,因为flex容器的默认值是flex-direction: row;

对于您想要水平放置的项目,将 flex 添加到父元素。因此,如果您只想要绿色项水平添加 display:flex#tabledata 元素,如下所示:

#tabledata {
    display: flex;
}

如果你想要一个更具体的答案,我会更改你问题中的代码并删除 rails 代码上的 ruby,然后添加虚拟文本以便可以完成简单的代码复制有人回答。

使用 HTML 表实际上根本没有理由使用 flex,但是如果您再次修改问题并摆脱 ruby 代码,您会得到更多具体答案。