【问题标题】:HTML - vertical align responsive imagesHTML - 垂直对齐响应图像
【发布时间】:2021-07-11 18:05:35
【问题描述】:

我正在为纯 HTML 和 css 的电子邮件制作模板

这是我的实际结果

我需要 3 张图片表示好,3 张图片表示不好

但现在我需要做这样的事情

我的问题是如何为具有预期结果的响应式容器构建结构。

这是我的一些实际代码

.column {
            float: left;
            width: 30%;
            padding: 15px;
        }
        .col-50 {
            float: left;
            width: 50%;
            margin-top: 0px;
            padding-left: 10px;
            padding-right: 10px;
        }
   
<div class="row">
      <div class="col-50 text-center">
       <img width="250" height="250" src="base64code" alt=\"good\">
       <img width="250" height="250" src="base64code" alt="good">
      </div>
     <div class="col-50 text-center">
      <img width="250" height="250" src="base64code" alt=\"good\">
      <img width="250" height="250" src="base64code" alt="good">
     </div>
    </div>

"

但它不起作用,我不知道我做错了什么。

【问题讨论】:

    标签: javascript html css templates styles


    【解决方案1】:

    创建上面的页面有很多布局。

    使用 CSS Grid 系统的一种可能解决方案:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="utf-8" />
            <meta name="viewport" content="initial-scale=1.0, user-scalable=yes" />
            <link rel="stylesheet" href="style.css" />
            <title>Vertical Align</title>
            <style>
                .grid-container {
                    display: grid;
                    grid-template-columns: auto auto;
                    grid-gap: 10px;
                    background-color: #2196F3;
                    padding: 10px;
                }
    
                .grid-container > div {
                    background-color: rgba(255, 255, 255, 0.8);
                    border: 1px solid black;
                    text-align: center;
                    font-size: 30px;
                    margin: 25px 50px;
                    padding: 50px 25px;
                }
            </style>
        </head>
    
        <body>
            <div class="grid-container">
                <div>Good 1</div>
                <div>No Good 1</div>
                <div>Good 2</div>  
                <div>No Good 2</div>
                <div>Good 3</div>
                <div>No Good 3</div>
                <div>Good ...</div>
                <div>No Good ...</div>
            </div>
            <script src="index.js" type="module"></script>
        </body>
    
    </html>
    

    【讨论】:

      【解决方案2】:

      试试这个:

      img{
        display:block;
      }
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
      <div class="row m-auto">
        <div class="col-xs">
          <h1>Header</h1>
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
        </div>
        <div class="col-xs">
          <h1>Header</h1>
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
          <img src="https://www.gravatar.com/avatar/0fdacb141bca7fa57c392b5f03872176?s=48&d=identicon&r=PG&f=1">
        </div>
      </div>

      【讨论】:

        【解决方案3】:

        因为您提到这将用于 HTML 电子邮件,所以我的建议是使用不太现代的编码风格并使用表格构建电子邮件。原因是,电子邮件从来没有很好的 html 和 css 支持,并且仍然存在现代网站永远不会遇到的简单设计问题。

        根据您想要支持的电子邮件客户端,您可能会遇到以下类型的问题:

        • head 标签中的 CSS 将被忽略
        • 链接 rel="stylesheet"... 将从电子邮件中删除(不会被使用)
        • div 标签的宽度将是 100%,即使您尝试以其他方式设置样式
        • 忽略边距样式(我总是使用填充代替电子邮件)

        关于哪些电子邮件客户端允许使用不同的样式有很多规则,最好的办法始终是将样式直接内联到 html 标签上。您可以在这里找到一个非常方便的指南,了解哪些是允许的,哪些是不允许的:https://www.campaignmonitor.com/css/

        对于您上面的示例,我会将其转换为如下表格:

        <table cellpadding="0" cellspacing="0" border="0" width="100%">
          <tr>
            <td width="50%" align="center">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
            </td>
            <td width="50%" align="center">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
              <img width="250" height="250" src="https://via.placeholder.com/250" alt="good" style="display: block;">
            </td>
          </tr>
        </table>

        然后您可以向图像添加填充以允许它们之间的垂直空间(电子邮件中的边距不是很好)。

        如果您需要更改图像的宽度以实现响应式目的,您可以在头部使用媒体查询。大多数移动电子邮件客户端将正确读取电子邮件头中的媒体查询,并将在图像上正确使用百分比宽度(容器的百分比而不是图像尺寸的百分比),因此对于移动设备,您可以为图像提供 % 宽度以更好地使用空间。

        @media (max-width: 599px){ //Assuming desktop is 600px+
            img{
                width: 100% !important;
            }
        }
        

        遗憾的是,由于内联样式,这需要使用 !important 标签。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-03-24
          • 2010-12-03
          • 2022-12-23
          • 1970-01-01
          • 2016-09-06
          • 2019-05-20
          相关资源
          最近更新 更多