icodingicoding
主页
JavaScript
Vue
React
TypeScript
Node
bug
笔记
时间线
主页
JavaScript
Vue
React
TypeScript
Node
bug
笔记
时间线
  • Markdown 语法
  • 插件
  • Vue
  • 组件设计
  • Element-Ui
  • WebSocket
  • CSS
  • Uniapp
  • 进阶
  • 扫码枪
  • Nginx
  • Nuxt.js
  • Vue 时钟
  • Learning
  • Linux
  • 打包优化
  • 大屏可视化
  • Jenkins
  • SVN
  • JsDocs
  • 代码规范

CSS

自定义变量

自定义变量作为负值使用

:root {
  --code-padding-x: 1.25rem;
}

.box {
  margin: 0 calc(var(--code-padding-x) * -1);
  padding: 0 var(--code-padding-x);
}

注意

想要把自定义属性 --[variable] 作为负值使用,可以使用 calc(var(--[variable]) * -1)

竖直等腰梯形(文字竖排)

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>竖直等腰梯形(文字竖排)</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }

      body {
        font-family: "Microsoft YaHei", sans-serif;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-height: 100vh;
        background: linear-gradient(135deg, #6a11cb 0%, #2575fc 100%);
        padding: 20px;
        color: #fff;
      }

      .container {
        max-width: 1000px;
        width: 100%;
        text-align: center;
      }

      h1 {
        margin-bottom: 30px;
        font-size: 2.5rem;
        text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
      }

      .description {
        margin-bottom: 40px;
        font-size: 1.2rem;
        line-height: 1.6;
        max-width: 800px;
        margin-left: auto;
        margin-right: auto;
      }

      .trapezoid-container {
        display: flex;
        justify-content: center;
        align-items: center;
        flex-wrap: wrap;
        gap: 40px;
        margin-top: 30px;
      }

      .trapezoid {
        position: relative;
        width: 100px;
        height: 200px;
        display: flex;
        justify-content: center;
        align-items: center;
      }

      /* 梯形实现 */
      .trapezoid-shape {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        border-right: 50px solid red;
        border-left: 0px solid red;
        border-top: 40px solid transparent;
        border-bottom: 40px solid transparent;
        box-sizing: border-box;
        z-index: 1;
      }

      /* 文字样式 */
      .trapezoid-text {
        position: relative;
        z-index: 2;
        color: white;
        font-weight: bold;
        writing-mode: vertical-lr;
        text-orientation: upright;
        letter-spacing: 10px;
        text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
        padding-bottom: 10px;
      }

      /* 梯形变体样式 */
      .trapezoid-variant {
        position: relative;
        width: 100px;
        height: 200px;
        display: flex;
        justify-content: center;
        align-items: center;
        margin-top: 20px;
      }

      .trapezoid-variant .trapezoid-shape {
        border-top-color: #e74c3c;
        border-bottom-color: #e74c3c;
      }

      /* 代码展示区域 */
      .code-container {
        background: #2c3e50;
        border-radius: 10px;
        padding: 20px;
        margin-top: 40px;
        overflow-x: auto;
        box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
      }

      pre {
        color: #ecf0f1;
        text-align: left;
        font-size: 1rem;
        line-height: 1.5;
        white-space: pre-wrap;
      }

      .code-comment {
        color: #7f8c8d;
      }

      .css-selector {
        color: #e74c3c;
      }

      .css-value {
        color: #3498db;
      }

      .explanation {
        margin-top: 30px;
        background: rgba(255, 255, 255, 0.1);
        padding: 20px;
        border-radius: 10px;
        text-align: left;
      }

      .explanation h2 {
        margin-bottom: 15px;
        color: #ffcc00;
      }

      .explanation ul {
        padding-left: 20px;
      }

      .explanation li {
        margin-bottom: 10px;
        line-height: 1.5;
      }

      @media (max-width: 600px) {
        .trapezoid-container {
          flex-direction: column;
        }

        h1 {
          font-size: 2rem;
        }
      }
    </style>
  </head>
  <body>
    <div class="container">
      <h1>竖直等腰梯形实现</h1>

      <p class="description">
        以下是如何使用CSS创建一个竖直的等腰梯形,梯形下底在右,上底在左,并实现文字竖排效果。
      </p>

      <div class="trapezoid-container">
        <div class="trapezoid">
          <div class="trapezoid-shape"></div>
          <div class="trapezoid-text">梯形文字</div>
        </div>

        <div class="trapezoid-variant">
          <div class="trapezoid-shape"></div>
          <div class="trapezoid-text">CSS创意</div>
        </div>
      </div>

      <div class="code-container">
        <pre><code><span class="code-comment">&lt;!-- HTML代码 --&gt;</span>
&lt;div class="trapezoid"&gt;
    &lt;div class="trapezoid-shape"&gt;&lt;/div&gt;
    &lt;div class="trapezoid-text"&gt;梯形文字&lt;/div&gt;
&lt;/div&gt;

<span class="code-comment">&lt;!-- CSS代码 --&gt;</span>
<span class="css-selector">.trapezoid</span> {
    <span class="css-value">position: relative;</span>
    <span class="css-value">width: 100px;</span>
    <span class="css-value">height: 200px;</span>
    <span class="css-value">display: flex;</span>
    <span class="css-value">justify-content: center;</span>
    <span class="css-value">align-items: center;</span>
}

<span class="css-selector">.trapezoid-shape</span> {
    <span class="css-value">position: absolute;</span>
    <span class="css-value">top: 0;</span>
    <span class="css-value">left: 0;</span>
    <span class="css-value">width: 100%;</span>
    <span class="css-value">height: 100%;</span>
    <span class="css-value">border-left: 50px solid transparent;</span>
    <span class="css-value">border-right: 0px solid transparent;</span>
    <span class="css-value">border-top: 40px solid #3498db;</span>
    <span class="css-value">border-bottom: 40px solid #3498db;</span>
    <span class="css-value">box-sizing: border-box;</span>
}

<span class="css-selector">.trapezoid-text</span> {
    <span class="css-value">position: relative;</span>
    <span class="css-value">z-index: 2;</span>
    <span class="css-value">color: white;</span>
    <span class="css-value">writing-mode: vertical-lr;</span>
    <span class="css-value">text-orientation: upright;</span>
    <span class="css-value">letter-spacing: 10px;</span>
}</code></pre>
      </div>

      <div class="explanation">
        <h2>实现原理</h2>
        <ul>
          <li>
            使用CSS的border属性创建梯形形状:通过设置左边框为透明,右边框为0,上下边框为有颜色的方式实现梯形效果
          </li>
          <li>使用writing-mode: vertical-lr属性实现文字竖排</li>
          <li>使用text-orientation: upright确保文字方向正确</li>
          <li>使用绝对定位将梯形形状置于底层,文字置于上层</li>
          <li>通过调整border的宽度值可以改变梯形的倾斜角度和大小</li>
        </ul>
      </div>
    </div>
  </body>
</html>
最后编辑:
上一页
WebSocket
下一页
Uniapp