html实现邮件模版布局-flex布局table布局-demo

news2025/1/12 3:43:07

邮件模版布局

flex - 布局简单方便  兼容性差

table - 优点 就是兼容性好,其他没有优点

效果图

flex布局

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>邮箱验证码</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        body {
            background-color: #f5f5f5;
        }

        .wrap {
            width: 610px;
            margin: 0 auto;
            background-color: #fff;
            border-radius: 10px;
        }

        .head-top > img {
            width: 100%;
            margin-bottom: 24px;
        }

        .head {
            display: flex;
            justify-content: space-between;
            padding: 0 30px;
        }

        .head-left-title > h1 {
            color: #000;
            font-family: PingFang SC;
            font-size: 18px;
            font-weight: 600;
            padding: 50px 0 20px;
        }

        .head-left-title > h3 {
            color: #000;
            font-family: PingFang SC;
            font-size: 14px;
            font-weight: 500;
        }

        .code {
            padding: 0 30px 75px;
        }

        .code > h2 {
            color: #000;
            font-family: PingFang SC;
            font-size: 14px;
            font-weight: 500;
            margin-bottom: 10px;
        }

        .code > .code-num {
            width: 100%;
            height: 64px;
            background-color: #E0FAFE;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .code-num > span {
            color: #000;
            font-family: PingFang SC;
            font-size: 32px;
            font-weight: 600;
            letter-spacing: 12.8px;
        }

        .code > h4 {
            color: #000;
            font-family: PingFang SC;
            font-size: 14px;
            font-weight: 400;
            margin-top: 10px;
        }

        .footer-wrap {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding-bottom: 40px;
        }

        .footer-wrap > h2 {
            color: #000;
            font-family: PingFang SC;
            font-size: 12px;
            font-weight: 400;
            padding-bottom: 5px;
        }

        .footer-wrap > h3 {
            color: #6C6C6C;
            font-family: PingFang SC;
            font-size: 12px;
            font-weight: 400;
            padding-top: 5px;
        }

        .footer-wrap > h3::before {
            display: inline-block;
            vertical-align: middle;
            content: '';
            width: 3px;
            height: 3px;
            border-radius: 50%;
            margin-right: 5px;
            background-color: #6C6C6C;
        }

        .footer-connect {
            display: flex;
            flex-direction: column;
            align-items: center;
        }

        .footer-connect > h2 {
            color: #000;
            font-family: PingFang SC;
            font-size: 12px;
            font-weight: 400;
            padding-bottom: 10px;
        }

        .footer-connect > h3 {
            color: #6C6C6C;
            font-family: PingFang SC;
            font-size: 12px;
            font-weight: 400;
            padding-bottom: 32px;
        }

        .footer-img {
            padding-bottom: 47px;
        }

        .footer-img > img {
            width: 30px;
            height: 30px;
            margin: 0 22px;
        }
    </style>
</head>
<body>
<div class="wrap">
    <div class="head-top">
        <img src="https://d2t9byo8r5tyol.cloudfront.net/images/head-top.svg">
    </div>
    <div class="head">
        <div class="head-left">
            <img src="images/logo.svg">
            <div class="head-left-title">
                <h1 th:text="${$1}">Subject</h1>
                <h3 th:if="${not #strings.isEmpty($2)}" th:text="${$2}">Describe</h3>
            </div>
        </div>
        <div class="head-right">
            <img src="https://d2t9byo8r5tyol.cloudfront.net/images/sketch.svg">
        </div>
    </div>
    <div class="code">
        <h2>验证码:</h2>
        <div class="code-num">
            <span th:text="${$3}">123456</span>
        </div>
        <h4 th:text="'验证码 ' + ${$4} + ' 分钟内有效,请勿泄露本邮件'">验证码 {} 分钟内有效,请勿泄露本邮件</h4>
        <h4 th:if="${not #strings.isEmpty($5)}" th:text="'防钓鱼码: ' + ${$5}">防钓鱼码: {}</h4>
    </div>
    <div class="footer">
        <img src="https://d2t9byo8r5tyol.cloudfront.net/images/bg.svg">
        <div class="footer-wrap">
            <h2>致力于保护您的账户和交易安全</h2>
                <h3>如果您怀疑自己收到了诈骗信息,请立即联系客服</h3>
                <h3>如果您对邮件的真实性存有疑问,请勿犹豫,立即通过官方客服来核实信息</h3>
                <h3>请勿与任何人分享您的验证码,包括官方客服和工作人员</h3>
        </div>
        <div class="footer-connect">
            <h2>感谢您使用!</h2>
            <h3>如有疑问或需要帮助,请联系客服</h3>
            <div class="footer-img">
                <img src="https://d2t9byo8r5tyol.cloudfront.net/images/t.svg">
                <img src="https://d2t9byo8r5tyol.cloudfront.net/images/x.svg">
            </div>
        </div>
    </div>
</div>
</body>

</html>

table布局-表格布局(推荐-兼容性高)

<html>

<head>
    <title>邮件模版</title>
</head>

<body>
    <!-- border="1" -->
    <table width="610" cellspacing="0" cellpadding="0"
        style="border-spacing: 0; color: #333333;  margin-left: auto; margin-right: auto;border-radius: 10px;">
        <tr>
            <td colspan="2" width="610" height="10">
                <img src="https://d2t9byo8r5tyol.cloudfront.net/images/head-top.svg" width="610px">
            </td>
        </tr>
        <tr>
            <td style="padding: 30px 0 0 30px;">
                <img src="images/logo.svg" width="154px">
            </td>
            <td rowspan="3" style="text-align: right;padding-top: 30px;">
                <img src="https://d2t9byo8r5tyol.cloudfront.net/images/sketch.svg" width="188px">
            </td>
        </tr>
        <tr>
            <td>
                <h1 style="font-size: 18px;
                font-weight: 600;color: #000;padding: 50px 0 20px;padding-left: 30px;" th:text="${$1}">Subject</h1>
            </td>
        </tr>
        <tr>
            <td>
                <h3 style="font-size: 14px;font-weight: 500;color: #000;padding-left: 30px;"
                    th:if="${not #strings.isEmpty($2)}" th:text="${$2}">
                    Describe</h3>
                </h3>
            </td>
        </tr>
        <tr>
            <td>
                <h2 style="font-size: 14px;
                font-weight: 500;color: #000;padding-left: 30px;">验证码:</h2>
            </td>
        </tr>
        <tr>
            <td colspan="2" style="padding: 0 30px;">
                <div style="width: 100%;
                height: 64px;
                background-color: #E0FAFE;text-align: center;line-height: 64px;">
                    <span style="font-size: 32px;
                    font-weight: 600;
                    letter-spacing: 12.8px;" th:text="${$3}">123456</span>
                </div>
            </td>
        </tr>
        <tr>
            <td>
                <h4 style="font-size: 14px;
                font-weight: 400;color: #000;margin-top: 10px;padding-left: 30px;"
                    th:text="'验证码 ' + ${$4} + ' 分钟内有效,请勿泄露本邮件'">验证码 {}
                    分钟内有效,请勿泄露本邮件</h4>
            </td>
        </tr>
        <tr>
            <td>
                <h4 style="font-size: 14px;
                font-weight: 400;color: #000;margin-top: 10px;padding-left: 30px;" th:if="${not #strings.isEmpty($5)}"
                    th:text="'防钓鱼码: ' + ${$5}">防钓鱼码: {}</h4>
            </td>
        </tr>
        <tr>
            <td colspan="2" width="610" height="110">
                <img src="https://d2t9byo8r5tyol.cloudfront.net/images/bg.svg" width="610px">
            </td>
        </tr>
        <tr>
            <td colspan="2" style="text-align: center;">
                <div style="padding-bottom: 40px;">
                    <h2 style="font-size: 12px;
                    font-weight: 400;color: #000;">AnyView致力于保护您的账户和交易安全</h2>
                    <h3 style="font-size: 12px;
                        font-weight: 400;color: #6C6C6C;">• 如果您怀疑自己收到了诈骗信息,请立即联系客服</h3>
                    <h3 style="font-size: 12px;
                        font-weight: 400;color: #6C6C6C;">• 如果您对邮件的真实性存有疑问,请勿犹豫,立即通过官方客服来核实信息</h3>
                    <h3 style="font-size: 12px;
                        font-weight: 400;color: #6C6C6C;">• 请勿与任何人分享您的验证码,包括官方客服和工作人员</h3>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2" style="text-align: center;">
                <div>
                    <h2 style="font-size: 12px;
                    font-weight: 400;color: #000;padding-bottom: 10px;">感谢您使用!</h2>
                    <h3 style="font-size: 12px;
                    font-weight: 400;color: #6C6C6C;padding-bottom: 32px;">如有疑问或需要帮助,请联系客服</h3>
                    <div style="padding-bottom: 47px;">
                        <img src="https://d2t9byo8r5tyol.cloudfront.net/images/t.svg" width="30px">
                        <img style="margin-left: 22px;" src="https://d2t9byo8r5tyol.cloudfront.net/images/x.svg"
                            width="30px">
                    </div>
                </div>
            </td>
        </tr>
    </table>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用ansbile部署lamp并部署Discuz(非分布式)

目录 一、实验准备 二、设置ansbile的hosts文件 三、在192.168.115.148上完成相关准备 上传Discuz_X3.3_SC_UTF8.zip 配置本地源、确保我们的sr0挂载后可以使用 四、编写roles 创建目录 编写http的main.yml 编写mysql的main.yml 编写phpmain.yml 编写Discuz的main.ym…

调用视频直播点播平台EasyDSS流媒体服务器上传点播文件接口的具体操作步骤

EasyDSS互联网视频云平台可提供一站式的视频转码、点播、直播、推拉流、时移回放等服务&#xff0c;也能支持4K视频的直播、点播等功能。EasyDSS可用于视频点播&#xff0c;并支持OBS、推流相机、EasyRTMP等设备的推流直播&#xff0c;可应用在AR、VR、无人机推流、虚拟直播、教…

JavaScript中迭代:For循环

之前我们学习过if_else这种控制结构&#xff0c;实际上&#xff0c;JavaScript中存在另一中控制结构&#xff0c;那就是循环&#xff0c;本节我们将来学习for循环&#xff1a; ● For循环的基本如下 for (初始值&#xff1b;什么条件下循环会结束&#xff1b;更新初始值&#…

13.Xaml Slider控件 -->滑块控件

1.运行图片 2.运行源码 a.xaml源码 <Grid Name="Grid1"><!--Maximum="100" 最大值Minimum="0" 最小值Value="50" 设定值Orientation

3.k8s dashboard设置域名登录案例(ingress版本为1.3.1)

文章目录 前言一、安装ingress1.1 下载ingress部署文件1.2 查看是否安装成功 二、配置dashboard域名映射2.1.在windows和linux添加上域名映射2.2 生成tls证书2.3 新增ingress配置2.3 验证 总结 前言 前面搭建了集群&#xff0c;配置了账号密码登录&#xff0c;现在配置k8s das…

认识 URL

基本概念 平时我们俗称的 "网址" 其实就是说的 URL (Uniform Resource Locator 统一资源定位符). 互联网上的每个文件都有一个唯一的URL&#xff0c;它包含的信息指出文件的位置以及浏览器应该怎么处理它. URL 的详细规则由 因特网标准RFC1738 进行了约定. (https://…

智能井盖:把好城市地下“安全门”

城市的井盖遍布大街小巷&#xff0c;然而&#xff0c;随着时间的推移和交通负荷的增加&#xff0c;井盖老化、损坏问题也日益凸显&#xff0c;“会跳舞的井盖”问题在各处屡有发生&#xff0c;井盖作为城市地下生命线的“守护者”&#xff0c;其安全问题也备受关注。这些问题如…

【深度学习】 Python 和 NumPy 系列教程(七):Python函数

目录 一、前言 二、实验环境 三、Python函数基础 1. 定义函数 2. 参数传递 3. 函数调用 4. 返回值 5. 函数文档字符串 四、将函数存储在模块中 1. 创建模块 2. 导入模块 a. import 模块名 b. from 模块名 import 函数名 c. from 模块名 import * 五、多种形式的…

日撸java_day66-68

文章目录 主动学习ALEC代码运行结果 主动学习ALEC 代码 package machineLearning.activelearning;import weka.core.Instances;import java.io.FileReader; import java.io.IOException; import java.util.Arrays;/*** ClassName: Alec* Package: machineLearning.activelear…

Linux中的虚拟文件系统(virtual file system)

要回答为何Linux系统能够支持多种不同类型的文件系统&#xff1f;是怎么做到的&#xff1f;这就得研究一下Linux中的虚拟文件系统&#xff08;简写为VFS&#xff09;&#xff0c;才能给出答案了。 虚拟文件系统&#xff08;VFS&#xff09; 是一个处于内核中的软件层&#xff0…

智能交叉领域的几个“为什么”?

智能是一个交叉性学科&#xff0c;涵盖了计算机科学、数学、物理、逻辑学、心理学、社会学等多个领域。它的研究和应用领域广泛&#xff0c;包括人机交互、人机融合智能、机器学习、自然语言处理、计算机视觉、智能控制等。 尽管智能在近年来发展迅速&#xff0c;但仍然有人可能…

数据库_之常用API的使用

数据库_之电商API MySQL C API 使用&#xff08;基本函数&#xff09; Mysql C API函数详解 MySQL的常用API 一个常用的程序调用MySQL数据库的时候通常都会调用以下API,下面来逐个分析. mysql_init() //函数原型 MYSQL *STDCALL mysql_init(MYSQL *mysql);这个API主要是用来分…

IP的基础知识、子网掩码、网关、CIDR

IP IP指网际互连协议&#xff0c;Internet Protocol的缩写&#xff0c;是TCP/IP体系中的网络层协议。 设计IP的目的是提高网络的可扩展性&#xff1a;一是解决互联网问题&#xff0c;实现网络的互联互通&#xff1b;二是解除顶层网络应用和底层网络技术之间的耦合。 根据端到端…

基于SpringBoot+Vue前后端分离的学校心理健康测试系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 研究背景介绍&#xf…

花粉“不讲武德”,飞行途中公然使用卫星通话,严重违反民航规定

华为Mate 60 Pro/Pro推出卫星电话功能&#xff0c;华为终端BG CTO李小龙呼吁用户遵守飞行安全规定。 近日&#xff0c;华为推出了崭新的Mate 60 Pro/Pro手机系列&#xff0c;其中的卫星电话功能引起了广泛的热议。这款智能手机的卫星电话功能可与相关运营商的服务配合使用&…

LeetCode:长度最小的子数组

题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&…

AI大模型(LLM)、聊天机器人整理(持续更新)by pickmind

原文&#xff1a;https://blog.pickmind.xyz/article/3c87123f-d283-4a05-8e43-4ee8550cf22f 目录&#xff1a; 文章目录 国内获批大模型国内大模型深渊图Open-source Large Language Models Leaderboard&#xff08;国外&#xff09;lmsys发布的大模型排行榜&#xff08;国外…

Git命令拉取代码

流程 1在本地clone项目【保持与远程仓库一致】 此时已绑定远程仓库 git clone xxxx 2.添加文件 3.放到暂存区 git add 4.提交到本地仓库 git commint -m "提示信息" 5推送到远程仓库 git push origin master 其他命令 分支命令 分支就是每个人开发 互不影响…

Qt应用开发(基础篇)——组合框容器 QGroupBox

一、前言 QGroupBox继承于QWidget&#xff0c;是一个带有标题的组合框架容器控件。 QGroupBox组合框容器自带一个顶部标题&#xff0c;一个面板。面板内部展示各种各样的部件&#xff0c;标题用来解释这些部件为什么集合在一起&#xff0c;并且支持键盘快捷方式切换部件焦点。比…

中断(全网最细!)

什么是中断&#xff1f; 中断是让单片机具有处理外部和内部随机发生事件实时处理的能力&#xff1b; 中断提高了单片机处理外部或内部的能力&#xff1b; 芯片在处理某一个A事件&#xff0c;发生了一件B事件&#xff0c;请求芯片&#xff08;中断发生&#xff09;去处理B事件…