You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS多边形内文本无法正确换行问题求助

问题描述

我在开发课程作业的小型网站,尝试用polygon属性制作梯形动画效果,希望内部段落能在该形状内自动换行,但文本却溢出并消失。我还尝试设置另一个形状作为文本边界,结果依旧;使用shape-outside属性也没有效果。

原始代码

CSS

.overlay {
  position: absolute;
  float: right;
  top: 0;
  left: 0;
  right: 0;
  background-color: rgb(56, 56, 56, 0.6);
  /* overflow: hidden; */
  width: 100%;
  height: 100%;
  transition: .5s ease;
  clip-path: polygon(0% 0%, 50% 0%, 100% 100%, 0% 100%);
  /* shape-outside: polygon(50% 0%, 100% 0%, 100% 100%); */
  translate: -50% 0%;
}
.container:hover .overlay {
  translate: 0% 0%;
}
.overlay3 {
  position: absolute;
  float: right;
  top: 0%; /* Positioning it centered vertically */
  left: 0%;
  right: 0;
  background-color: rgba(255, 128, 64, 0.6);
  overflow: hidden;
  width: 100%; /* Make it take up some width so the text can wrap */
  height: 100%; /* Adjust height as necessary */
  clip-path: polygon(50% 0%, 100% 0%, 100% 100%);
  shape-outside: polygon(50% 0%, 100% 0%, 100% 100%);
}
.heading-ac-130 {
  font-size: 175%;
  /* border: 2px solid black; */
  /* padding-left: 5%; */
  text-align: left;
  color: black;
  font-family: verdana;
}
.text p{
  color: white;
  font-family: courier;
  font-size: 100%;
  position: absolute;
  /* overflow: hidden; */
  transform: translate(-0%, -50%);
  -ms-transform: translate(-0%, -50%);
  clear: both;
  text-align: left;
}

HTML

<HTML>
<HEAD>
  <link rel="stylesheet" href="styles.css">
  <!-- style="color: white;" -->
  <TITLE >
    AC-130
  </TITLE>
</HEAD>
<BODY>
  <div class="container">
    <img src="AC.jpg" alt="Gunship" class="image">
    <div class="overlay">
      <div class="heading-ac-130">
        <H1 >AC-130</H1>
      </div>
      <div class="text">
        <P >
          Il Lockheed AC-130, noto anche come Angelo della Morte (Death Angel), è un quadrimotore a turboelica impiegato come cannoniera volante pesantemente armata per l'attacco al suolo, in servizio presso l'United States Air Force dalla fine degli anni sessanta fino ai giorni nostri. L'aereo è una variante del C-130 da trasporto costruito dalla Lockheed e viene convertito dalla Boeing in cannoniera. <br>
          Il velivolo è in dotazione solo all'USAF che lo ha impiegato nella guerra del Vietnam e nella guerra del Golfo, dove peraltro uno di questi aerei è stato abbattuto. Durante la guerra del Vietnam furono persi 6 AC 130. 
        </P>
      </div>
    </div>  
    <div class="overlay3"></div>
  </div>
</BODY>
</HTML>
解决方案

修改后的代码

CSS

.container {
  position: relative;
  width: 100%;
  max-width: 800px;
  overflow: hidden;
}
.image {
  width: 100%;
  display: block;
}
.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(56, 56, 56, 0.6);
  transition: .5s ease;
  clip-path: polygon(0% 0%, 50% 0%, 100% 100%, 0% 100%);
  translate: -100% 0;
  padding: 2rem;
  box-sizing: border-box;
  overflow: hidden;
}
.container:hover .overlay {
  translate: 0% 0%;
}
.heading-ac-130 {
  font-size: 175%;
  text-align: left;
  color: black;
  font-family: verdana;
  margin-top: 0;
}
.text p {
  color: white;
  font-family: courier;
  font-size: 100%;
  text-align: left;
  margin: 1rem 0 0 0;
}

HTML

<HTML>
<HEAD>
  <link rel="stylesheet" href="styles.css">
  <TITLE>AC-130</TITLE>
</HEAD>
<BODY>
  <div class="container">
    <img src="AC.jpg" alt="Gunship" class="image">
    <div class="overlay">
      <div class="heading-ac-130">
        <H1>AC-130</H1>
      </div>
      <div class="text">
        <P>
          Il Lockheed AC-130, noto anche come Angelo della Morte (Death Angel), è un quadrimotore a turboelica impiegato come cannoniera volante pesantemente armata per l'attacco al suolo, in servizio presso l'United States Air Force dalla fine degli anni sessanta fino ai giorni nostri. L'aereo è una variante del C-130 da trasporto costruito dalla Lockheed e viene convertito dalla Boeing in cannoniera.
          <br>
          Il velivolo è in dotazione solo all'USAF che lo ha impiegato nella guerra del Vietnam e nella guerra del Golfo, dove peraltro uno di questi aerei è stato abbattuto. Durante la guerra del Vietnam furono persi 6 AC 130. 
        </P>
      </div>
    </div>
  </div>
</BODY>
</HTML>

关键修改说明

  • 给.container设置position: relative,确保绝对定位的.overlay能正确相对它定位
  • 移除.text p的position: absolute和transform,让文本回到文档流,自然受父容器clip-path的形状约束
  • 给.overlay添加padding和box-sizing: border-box,避免文本贴到梯形边缘,同时保证内边距不超出容器宽度
  • 调整.overlay初始translate为-100% 0,让动画展开更自然,hover时完全显示
  • 删除冗余的.overlay3,直接用.overlay的clip-path实现形状约束
  • 开启.overlay的overflow: hidden,配合clip-path裁剪超出梯形范围的文本

内容的提问来源于stack exchange,提问作者The Flipper Stone 782

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:28:14