在手机/平板电脑屏幕上将表格变成块元素并将列转换为行 [响应式设计]

Posted

技术标签:

【中文标题】在手机/平板电脑屏幕上将表格变成块元素并将列转换为行 [响应式设计]【英文标题】:Turn a table into a block element on mobile/tablet screens and transform columns into rows [Responsive Design] 【发布时间】:2021-11-20 07:55:05 【问题描述】:

伙计们,我需要帮助将表格的列转换为移动/平板电脑屏幕上的相应行,以获得更好的用户体验。我附上了我卡住的代码和我希望在这一点上实现的图片。我会很感激你的建议。 I want table columns to transform into respective rows as depicted in this picture

.product-overview-table 
  margin: 30px 0;
  width:100%;

.product-overview-table thead 
  background: #F9BA32;
  color: #fff;

.product-overview-table,
.product-overview-table td,
.product-overview-table th 
  border: none;
  box-sizing: border-box;
  padding: 10px;

.product-overview-table thead th 
  font-weight: 300;
  font-size: 17px;
  padding: 10px;
  margin: 0;

.product-overview-table tr 
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center;
  transition: 0.3s;

.product-overview-table tbody tr:hover 
  transform: scale(1.02);
  transition: 0.3s;
  box-shadow: 0 0 20px -4px rgba(0, 0, 0, 0.15);

.product-overview-table tbody tr 
  border: 2px solid #e1e1e1;
  margin-bottom: 5px;

.product-overview-table tr td:first-child,
.product-overview-table tr th:first-child 
  width: 20%;

.product-overview-table tr td:nth-child(2),
.product-overview-table tr th:nth-child(2) 
  width: 20%;

.product-overview-table tr td:nth-child(3),
.product-overview-table tr th:nth-child(3) 
  width: 10%;

.product-overview-table tr td:nth-child(4),
.product-overview-table tr th:nth-child(4) 
  width: 10%;

.product-overview-table tr td:nth-child(5),
.product-overview-table tr th:nth-child(5) 
  width: 10%;

.product-overview-table tr td:nth-child(6),
.product-overview-table tr th:nth-child(6) 
  width: 10%;

.product-overview-table tr td:last-child,
.product-overview-table tr th:last-child 
  width: 20%;

.product-overview-table .product-image 
  position: relative;

.product-overview-table .p_tag 
  position: absolute;
  left: -10px;
  top: 0;
  background: #5898ff;
  padding: 5px 5px;
  color: #fff;
  font-size: 12px;
  text-transform: uppercase;

.product-overview-table .p_tag::after 
  content: ' ';
  display: block;
  position: absolute;
  left: -10px;
  bottom: -7px;
  border-color: rgba(0, 0, 0, 0) #133091 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0);
  border-style: inset solid inset inset;
  border-width: 0 10px 7px;


.product-overview-table .p-img 
  width: 90%;
  max-height: 140px;
  margin: 0 auto;
  display: block;
  height: auto;
  object-fit: contain;

.product-overview-table .product-title .p_title 
  font-weight: 600;
  font-size: 17px;
  line-height: 1.2;
  text-decoration: none;
  color: #4b77b7;
  text-align: center;

.product-overview-table .product-btn a 
  background: #D32F2F;
  text-transform: capitalize;
  padding: 10px;
  border-radius: 5px;
  color: #fff;
  font-size: 15px;
  display: block;
  text-align: center;
  transition: 0.3s;

.product-overview-table .product-btn a:hover 
  background: #000;
  transition: 0.3s;

.product-overview-table .product-feature 
  font-size: 16px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 10;
  -webkit-box-orient: vertical;
  text-align: center;

@media only screen and (max-width: 768px) 
  .product-overview-table .p_tag 
    position: absolute;
    left: -20px;
    top: -10px;
  
  .product-overview-table tbody tr 
    padding: 10px;
  
  .product-overview-table tr td:first-child 
    width: 100%;
  
  .product-overview-table tr td:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr td:last-child,
  .product-overview-table tr th:last-child 
    width: 100%;
  
  .product-overview-table .product-btn a 
    margin-top: 20px;
  
  .product-overview-table tr th:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr th:first-child,
  .product-overview-table tr th:nth-child(2),
  .product-overview-table tr th:nth-child(3),
  .product-overview-table tr th:nth-child(4),
  .product-overview-table tr th:nth-child(5),
  .product-overview-table tr th:nth-child(6),
  .product-overview-table tr th:last-child 
    display: none;
  
  
  td:not(:first-child):before 
    color: #91ced4;
    content: "";
    display: block;
    left: 0;
    position: relative;
    width: 100%;
    tax-align:left;
    float: left;
  
  
  .product-overview-table td:nth-child(3),
  .product-overview-table td:nth-child(4),
  .product-overview-table td:nth-child(5),
  .product-overview-table td:nth-child(6) 
    tax-align:left;
    float: left;
  

  td:nth-child(3):before 
    content: "Material:";
  
  td:nth-child(4):before 
    content: "Wheel:";
  
  td:nth-child(5):before 
    content: "Capacity:";
  
  td:nth-child(6):before 
    content: "Colors:";
  


/* End Affiliate Product Box */
      
<table class="product-overview-table">
  <thead>
    <tr>
      <th>Preview</th>
      <th>Product</th>
      <th>Material</th>
      <th>Wheel</th>
      <th>Capacity</th>
      <th>Colors</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="product-image">
        <div class="p_tag">
          Top Pick
        </div>
        <a href="#" rel="nofollow" target="_blank">
          <img src="https://redkosports.com/wp-content/uploads/2021/09/Redko-Sports-About-Slider-Background.png" class="p-img">
        </a>
      </td>
      <td class="product-title">
        <a href="#" rel="nofollow" target="_blank">
          <div class="p_title">
            SkateXS Personalized Street Skateboard
          </div>
        </a>
      </td>
      <td class="product-feature">
        Bamboo
      </td>
      <td class="product-feature">
        Polyurethane </td>
      <td class="product-feature">
        250 lbs
      </td>
      <td class="product-feature">
        24
      </td>
      <td class="product-btn">
        <a href="#" rel="nofollow" target="_blank">Check Price
        </a>
      </td>
    </tr>
  </tbody>
  <style>
  </style>
</table>

强文本

【问题讨论】:

在媒体查询中,设置 tr flex-direction 列,并删除第 n 个孩子 3、4、5 的所有宽度。 这些答案解决了你的问题吗? 【参考方案1】:

这是我对你的建议..我希望你会满意:-)

.product-overview-table 
  margin: 30px 0;
  width:100%;

.product-overview-table thead 
  background: #F9BA32;
  color: #fff;

.product-overview-table,
.product-overview-table td,
.product-overview-table th 
  border: none;
  box-sizing: border-box;
  padding: 10px;

.product-overview-table thead th 
  font-weight: 300;
  font-size: 17px;
  padding: 10px;
  margin: 0;

.product-overview-table tr 
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center;
  transition: 0.3s;

.product-overview-table tbody tr:hover 
  transform: scale(1.02);
  transition: 0.3s;
  box-shadow: 0 0 20px -4px rgba(0, 0, 0, 0.15);

.product-overview-table tbody tr 
  border: 2px solid #e1e1e1;
  margin-bottom: 5px;

.product-overview-table tr td:first-child,
.product-overview-table tr th:first-child 
  width: 20%;

.product-overview-table tr td:nth-child(2),
.product-overview-table tr th:nth-child(2) 
  width: 20%;

.product-overview-table tr td:nth-child(3),
.product-overview-table tr th:nth-child(3) 
  width: 10%;

.product-overview-table tr td:nth-child(4),
.product-overview-table tr th:nth-child(4) 
  width: 10%;

.product-overview-table tr td:nth-child(5),
.product-overview-table tr th:nth-child(5) 
  width: 10%;

.product-overview-table tr td:nth-child(6),
.product-overview-table tr th:nth-child(6) 
  width: 10%;

.product-overview-table tr td:last-child,
.product-overview-table tr th:last-child 
  width: 20%;

.product-overview-table .product-image 
  position: relative;

.product-overview-table .p_tag 
  position: absolute;
  left: -10px;
  top: 0;
  background: #5898ff;
  padding: 5px 5px;
  color: #fff;
  font-size: 12px;
  text-transform: uppercase;

.product-overview-table .p_tag::after 
  content: ' ';
  display: block;
  position: absolute;
  left: -10px;
  bottom: -7px;
  border-color: rgba(0, 0, 0, 0) #133091 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0);
  border-style: inset solid inset inset;
  border-width: 0 10px 7px;


.product-overview-table .p-img 
  width: 90%;
  max-height: 140px;
  margin: 0 auto;
  display: block;
  height: auto;
  object-fit: contain;

.product-overview-table .product-title .p_title 
  font-weight: 600;
  font-size: 17px;
  line-height: 1.2;
  text-decoration: none;
  color: #4b77b7;
  text-align: center;

.product-overview-table .product-btn a 
  background: #D32F2F;
  text-transform: capitalize;
  padding: 10px;
  border-radius: 5px;
  color: #fff;
  font-size: 15px;
  display: block;
  text-align: center;
  transition: 0.3s;

.product-overview-table .product-btn a:hover 
  background: #000;
  transition: 0.3s;

.product-overview-table .product-feature 
  font-size: 16px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 10;
  -webkit-box-orient: vertical;
  text-align: center;

@media only screen and (max-width: 768px) 
  
  .product-overview-table tr 
    flex-direction:column;
    align-items:ce;
  
 
  .product-overview-table tr td:nth-child(4) 
    width: 25%;
  
  
  .product-overview-table tr td:nth-child(3) 
    width: 25%;
  
  
  .product-overview-table tr td:nth-child(5) 
    width: 25%;
  
  
  .product-overview-table tr td:nth-child(6) 
    width: 25%;
  
  
  
  
  .product-overview-table .p_tag 
    position: absolute;
    left: -20px;
    top: -10px;
  
  .product-overview-table tbody tr 
    padding: 10px;
  
  
  .product-overview-table tr td:first-child 
    width: 100%;
  
  .product-overview-table tr td:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr td:last-child,
  .product-overview-table tr th:last-child 
    width: 100%;
  
  .product-overview-table .product-btn a 
    margin-top: 20px;
  
  .product-overview-table tr th:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr th:first-child,
  .product-overview-table tr th:nth-child(2),
  .product-overview-table tr th:nth-child(3),
  .product-overview-table tr th:nth-child(4),
  .product-overview-table tr th:nth-child(5),
  .product-overview-table tr th:nth-child(6),
  .product-overview-table tr th:last-child 
    display: none;
  
  
  td:not(:first-child):before 
    color: #91ced4;
    content: "";
    display: block;
    left: 0;
    position: relative;
    width: 100%;
    tax-align:left;
    float: left;
  
  
  .product-overview-table td:nth-child(3),
  .product-overview-table td:nth-child(4),
  .product-overview-table td:nth-child(5),
  .product-overview-table td:nth-child(6) 
    tax-align:left;
    float: left;
  

  td:nth-child(3):before 
    content: "Material:";
  
  td:nth-child(4):before 
    content: "Wheel:";
  
  td:nth-child(5):before 
    content: "Capacity:";
  
  td:nth-child(6):before 
    content: "Colors:";
  
  
<table class="product-overview-table">
  <thead>
    <tr>
      <th>Preview</th>
      <th>Product</th>
      <th>Material</th>
      <th>Wheel</th>
      <th>Capacity</th>
      <th>Colors</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="product-image">
        <div class="p_tag">
          Top Pick
        </div>
        <a href="#" rel="nofollow" target="_blank">
          <img src="https://redkosports.com/wp-content/uploads/2021/09/Redko-Sports-About-Slider-Background.png" class="p-img">
        </a>
      </td>
      <td class="product-title">
        <a href="#" rel="nofollow" target="_blank">
          <div class="p_title">
            SkateXS Personalized Street Skateboard
          </div>
        </a>
      </td>
      <td class="product-feature">
        Bamboo
      </td>
      <td class="product-feature">
        Polyurethane </td>
      <td class="product-feature">
        250 lbs
      </td>
      <td class="product-feature">
        24
      </td>
      <td class="product-btn">
        <a href="#" rel="nofollow" target="_blank">Check Price
        </a>
      </td>
    </tr>
  </tbody>
  <style>
  </style>
</table>

【讨论】:

感谢@MarioGB 的输入 不客气 ;-) @Liam Noah【参考方案2】:

.product-overview-table 
  margin: 30px 0;
  width: 100%;


.product-overview-table thead 
  background: #F9BA32;
  color: #fff;


.product-overview-table,
.product-overview-table td,
.product-overview-table th 
  border: none;
  box-sizing: border-box;
  padding: 10px;


.product-overview-table thead th 
  font-weight: 300;
  font-size: 17px;
  padding: 10px;
  margin: 0;


.product-overview-table tr 
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center;
  transition: 0.3s;


.product-overview-table tbody tr:hover 
  transform: scale(1.02);
  transition: 0.3s;
  box-shadow: 0 0 20px -4px rgba(0, 0, 0, 0.15);


.product-overview-table tbody tr 
  border: 2px solid #e1e1e1;
  margin-bottom: 5px;


.product-overview-table tr td:first-child,
.product-overview-table tr th:first-child 
  width: 20%;


.product-overview-table tr td:nth-child(2),
.product-overview-table tr th:nth-child(2) 
  width: 20%;


.product-overview-table tr td:nth-child(3),
.product-overview-table tr th:nth-child(3) 
  width: 10%;


.product-overview-table tr td:nth-child(4),
.product-overview-table tr th:nth-child(4) 
  width: 10%;


.product-overview-table tr td:nth-child(5),
.product-overview-table tr th:nth-child(5) 
  width: 10%;


.product-overview-table tr td:nth-child(6),
.product-overview-table tr th:nth-child(6) 
  width: 10%;


.product-overview-table tr td:last-child,
.product-overview-table tr th:last-child 
  width: 20%;


.product-overview-table .product-image 
  position: relative;


.product-overview-table .p_tag 
  position: absolute;
  left: -10px;
  top: 0;
  background: #5898ff;
  padding: 5px 5px;
  color: #fff;
  font-size: 12px;
  text-transform: uppercase;


.product-overview-table .p_tag::after 
  content: ' ';
  display: block;
  position: absolute;
  left: -10px;
  bottom: -7px;
  border-color: rgba(0, 0, 0, 0) #133091 rgba(0, 0, 0, 0) rgba(0, 0, 0, 0);
  border-style: inset solid inset inset;
  border-width: 0 10px 7px;


.product-overview-table .p-img 
  width: 90%;
  max-height: 140px;
  margin: 0 auto;
  display: block;
  height: auto;
  object-fit: contain;


.product-overview-table .product-title .p_title 
  font-weight: 600;
  font-size: 17px;
  line-height: 1.2;
  text-decoration: none;
  color: #4b77b7;
  text-align: center;


.product-overview-table .product-btn a 
  background: #D32F2F;
  text-transform: capitalize;
  padding: 10px;
  border-radius: 5px;
  color: #fff;
  font-size: 15px;
  display: block;
  text-align: center;
  transition: 0.3s;


.product-overview-table .product-btn a:hover 
  background: #000;
  transition: 0.3s;


.product-overview-table .product-feature 
  font-size: 16px;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 10;
  -webkit-box-orient: vertical;
  text-align: center;


@media only screen and (max-width: 768px) 
  .product-overview-table .p_tag 
    position: absolute;
    left: -20px;
    top: -10px;
  
  .product-overview-table tbody tr 
    padding: 10px;
    flex-direction: column;
  
  .product-overview-table tr td:first-child 
    width: 100%;
  
  .product-overview-table tr td:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr td:last-child,
  .product-overview-table tr th:last-child 
    width: 100%;
  
  .product-overview-table .product-btn a 
    margin-top: 20px;
  
  .product-overview-table tr th:nth-child(2) 
    width: 100%;
  
  .product-overview-table tr th:first-child,
  .product-overview-table tr th:nth-child(2),
  .product-overview-table tr th:nth-child(3),
  .product-overview-table tr th:nth-child(4),
  .product-overview-table tr th:nth-child(5),
  .product-overview-table tr th:nth-child(6),
  .product-overview-table tr th:last-child 
    display: none;
  
  td:not(:first-child):before 
    color: #91ced4;
    content: "";
    display: block;
    left: 0;
    position: relative;
    width: 100%;
    tax-align: left;
    float: left;
  
  .product-overview-table tr td:nth-child(3),
  .product-overview-table tr td:nth-child(4),
  .product-overview-table tr td:nth-child(5),
  .product-overview-table tr td:nth-child(6) 
    width: 100%;
  
  td:nth-child(3):before 
    content: "Material:";
  
  td:nth-child(4):before 
    content: "Wheel:";
  
  td:nth-child(5):before 
    content: "Capacity:";
  
  td:nth-child(6):before 
    content: "Colors:";
  
<table class="product-overview-table">
  <thead>
    <tr>
      <th>Preview</th>
      <th>Product</th>
      <th>Material</th>
      <th>Wheel</th>
      <th>Capacity</th>
      <th>Colors</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td class="product-image">
        <div class="p_tag">
          Top Pick
        </div>
        <a href="#" rel="nofollow" target="_blank">
          <img src="https://redkosports.com/wp-content/uploads/2021/09/Redko-Sports-About-Slider-Background.png" class="p-img">
        </a>
      </td>
      <td class="product-title">
        <a href="#" rel="nofollow" target="_blank">
          <div class="p_title">
            SkateXS Personalized Street Skateboard
          </div>
        </a>
      </td>
      <td class="product-feature">
        Bamboo
      </td>
      <td class="product-feature">
        Polyurethane </td>
      <td class="product-feature">
        250 lbs
      </td>
      <td class="product-feature">
        24
      </td>
      <td class="product-btn">
        <a href="#" rel="nofollow" target="_blank">Check Price
        </a>
      </td>
    </tr>
  </tbody>
</table>

我修改了一些 CSS。

【讨论】:

非常感谢您的意见@Servesh

以上是关于在手机/平板电脑屏幕上将表格变成块元素并将列转换为行 [响应式设计]的主要内容,如果未能解决你的问题,请参考以下文章

在Android上将int数组转换为Bitmap

HTML中 块级元素 如何转为 行内元素??

怎么把HTML电脑网页转换成手机版的

C语言怎么截屏并将数据转换成RGB或YUV420

电脑屏幕变成黑白色的了!如何调成彩色的呢?谢谢

如何读取指定的单元格值并将文件从 excel 转换为电子表格?