I am trying to archive the text inside a parallelogram. The edges of the text should follow the shape. The length of the text is dynamic so, I also need the height of the shape to be automatically adjust. Is this possible? enter image description here

以下是我当前的代码:

.parallelogram{
  width: 350px; /* Set your desired width */
  background-color: orange; /* Set your desired background color */
  -webkit-shape-outside: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
  shape-outside: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
  -webkit-clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
  clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
  padding: 50px;
}
<div class="parallelogram">
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
</div>

使用上面的代码,文本会被裁剪到边上,也不会跟随形状.当我使用Transform Skew时,文本也会被转换.我不想这样.

谢谢

推荐答案

您可以按如下方式近似计算:

.container {
  display: inline-flex; /* we need a flexbox to use percentage height */
  background-color: orange;
  clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}

.parallelogram {
  width: 350px;
  padding: 10px;
  text-align: justify;
}
/* a bit hacky but you need an extra element 
   with a hardcoded height to compensate for the height of
   the float elements
*/
.parallelogram:after {
  content:"";
  display:block;
  height: 35px; /* you have to update this manually */
}

.parallelogram span:before,
.parallelogram span:after {
  content:"";
  height: 100%; /* 100% parent height to adjust to content */
  width: 50%; /* half width */
}

/* one is placed on the left and the other on the right */
.parallelogram span:before {
  float: left;
  shape-outside: polygon(0 0,50% 0,0 100%);
}
.parallelogram span:after {
  float: right;
  shape-outside: polygon(50% 100%,100% 0,100% 100%);
}
<div class="container"> <!-- you need an extra container here  -->
  <div class="parallelogram">
    <span></span> <!-- and an extra element here for the floats  -->
    lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
    lorem ipsum lorem ipsum lorem ipsum
  </div>
</div>

Html相关问答推荐

如何使用wai-aria标签访问相关的复选框?

当在双引号|Angular .html文件中使用时,Pretier会将单引号字符替换为&;Quot;

如何在所有屏幕大小下使带有背景图像的伪元素作为标题的衬底?

assets资源 净值元素不会扩展到涵盖子项

Django中的图像未从静态显示

如何使用Reaction Js读取html文件中的代码

渐变进度条位置

CSS中的转换属性是如何工作的?

文本幻灯片显示动画

与窗高匹配的响应式正方形网格

错误时交换表单,成功时使用HTMX重定向

`table>;的消失;tbody:nth子级(1)`HTML

Angular MatBadge 在高于 99 时不显示完整数字

如何在黑暗模式切换中添加图标

当我们在vue中使用截断大文本时如何显示标题属性?

当作为常规图片输入时,Cloudfront分布式图像可显示,但作为背景图像不显示

W3Schools 幻灯片相同高度

a with