首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在边框上放置文本?(HTML、CSS)

如何在边框上放置文本?(HTML、CSS)
EN

Stack Overflow用户
提问于 2015-12-14 09:24:24
回答 1查看 194关注 0票数 16

我把我的div堆得像展开的纸一样。我想把文本放在每个div上,把它们分成几个部分。

但是我制作div的方式,唯一可见的部分是边框。当我向div添加文本时,文本会出现在应该显示的位置的上方或下方(因为它们位于不可见的div上)。

基本上,我的div是不可见的。我的边框是可见的。我需要文本出现在边框上。但要做到这一点,我必须更改每个文本块的填充。有没有办法只把文本放在边框上?或者有没有一种更简单的方法来获得倾斜的div?

我试过rotateY,但它只会让它们缩水。

问题是--我只能使用HTML和CSS。

以下是它当前显示方式的屏幕截图:

CSS:

代码语言:javascript
复制
#slant1 {
width: 700px;
height: 225px;
background-color: white;
font-family: thorndale for vst;
font-size: 16px;
}

#slant2 {
border-top: 260px solid #F2F2F2;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 2600px;
width: 600px;
position: absolute;
z-index: -1;
}

#slant3 {
border-bottom: 225px solid #E6E6E6;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 225px;
width: 600px;
font-family: thorndale for vst;
font-size: 16px;
}

#slant4 {
border-top: 225px solid #F2F2F2;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
height: 225px;
width: 600px;
}




<!DOCTYPE html>
<html lang="en" id="Origami">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Origami</title>
<link href="discover.css" rel="stylesheet" type="text/css" /> 
<meta name="description" content="Origami" />
<meta name="keywords" content="Origami">
<meta name="author" content="JojoRae" />
</head>
<body>  
<div id="columnwrapper2">
<div id="slant1">
<div class="adamas1"></div> <div class="adamas"></div>
<p class="p"> 
</p>
</div>
<div id="slant2">
<ul class="slides">
<input type="radio" name="group3" id="img-11" checked />
<li class="slide-container">
<div class="slide">
<img src="../ei/treasure.gif" />
</div>
<div class="nav">
<label for="img-15" class="prev">&#x2039;</label>
<label for="img-12" class="next">&#x203a;</label>
</div>
</li>
</ul>
</div>
<div id="slant3">
<div class="adamas3"></div> 
<p class="p2"></p>
</div>
<div id="slant4">
</div>
</div> <!--closes columnwrapper-->
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2015-12-14 20:57:33

我个人会忽略边界选项(这有点老生常谈),而使用一些不同的选项(可能更容易)。以下是几个选项:

1)使用CSS3 3D Transforms

你试过这个,但是没有用。从你在问题中所说的,你在使用rotateY时发现的问题(它只是缩小了)似乎是因为你没有将它与perspective结合起来。一旦你这样做了(并对这些值进行一点调整,使它们适应你所寻找的),不仅div会倾斜,而且它的内容也会倾斜,使其看起来与纸张效果处于同一角度。

下面是一个示例(also available on this JSFiddle):

代码语言:javascript
复制
html, body { 
  background:#444; 
}

#columnwrapper2 { 
  min-width:700px; 
}

.slant { 
  margin:auto auto;  
}

#slant1 {
  width: 700px;
  height: 225px;
  background-color: white;
  font-family: thorndale for vst;
  font-size: 16px;
}

#slant2 {
  width:655px;
  height:225px;
  background:#eee;
  transform: perspective(600px) rotateX(-20deg);
}

#slant3 {
  width:668px;
  height:225px;
  background:#ddd;
  transform: perspective(600px) rotateX(20deg) translateY(-33px);
}

#slant4 {
  width:642px;
  height:225px;
  background:#eee;
  transform: perspective(600px) rotateX(-20deg) translateY(-33px);
}
代码语言:javascript
复制
<div id="columnwrapper2">
  <div id="slant1" class="slant">
    <div>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris mi odio, fermentum eget ex sed, tincidunt consectetur enim. Suspendisse viverra commodo ultrices. In eu facilisis leo, quis consectetur ex. Nam congue fringilla elit, ac mattis velit dictum ac. Donec tincidunt placerat ligula fermentum vulputate. Sed malesuada orci sit amet enim euismod, et euismod nunc pretium. Ut molestie et sem eu consectetur. Praesent fringilla elit enim, a convallis nulla sodales id. Sed tristique cursus libero. Cras ac magna id nisl pulvinar iaculis eu sit amet velit.
    </div>
  </div>
  <div id="slant2" class="slant">
    <div>
      <img src="http://lorempixel.com/500/200/people" alt="Random Picture" />
    </div>
  </div>
  <div id="slant3" class="slant">
    <div>
      Vivamus interdum facilisis justo ut fermentum. Cras turpis diam, efficitur sit amet mi sit amet, dapibus fermentum odio. Aenean fermentum tincidunt placerat. Vivamus dictum, diam quis elementum laoreet, lacus ex consectetur neque, eget fringilla ipsum neque nec sem. Ut eget venenatis urna, quis feugiat orci. Pellentesque vel interdum ante. Nulla blandit ex quam, non sollicitudin lectus laoreet nec. Integer vitae finibus elit. Duis pellentesque turpis odio, sit amet convallis libero blandit et. Maecenas accumsan est eros, vel scelerisque nulla scelerisque sit amet.
    </div>
  </div>
  <div id="slant4" class="slant">
    <div>
      Duis non placerat nisi, in maximus tellus. Nullam in interdum nunc, sed tempus nunc. Suspendisse lorem nisi, blandit vel odio ac, varius rhoncus sem. Phasellus quis placerat enim, id iaculis eros. Nunc at egestas nisi. Nulla in dui mattis, lacinia lectus ac, commodo ligula. Fusce fringilla vitae magna sit amet dignissim. Fusce quis elit elementum, faucibus eros id, facilisis mi. In vitae accumsan tellus. Quisque venenatis lacus urna, volutpat luctus eros feugiat id. Duis pretium pulvinar molestie. Nulla eget rhoncus sapien.
    </div>
  </div>
</div> <!--closes columnwrapper-->

2)使用SVG

另一种选择是使用SVG。如果你不想让文本因为纸张折叠效果而倾斜(或者不需要玩弄数字),这可能是一个更容易的选择。它将要求您知道每个部分的确切高度。

您可以在SVG中创建一个图像(直接作为图像或下面的代码),并将其放在#columnwrapper2的背景中,其余内容将放在图像的顶部。

请参阅此演示(also available on this JSFiddle):

代码语言:javascript
复制
html, body { 
  background:#444; 
}

#columnwrapper2 {
  width:700px;
  position:relative;
}

.slant { 
  margin:auto auto;
  height:250px;
  width:600px;
  padding:50px auto;
  z-index:2;
  position:relative;
}
代码语言:javascript
复制
<div id="columnwrapper2">
  <svg width="700px" height="1000px" style="position:absolute;top:0;left:0;z-index:1;">
    <path fill="#ffffff" d="M0,0 700,0 700,250 0,250Z" />
    <path fill="#eeeeee" d="M0,250 700,250 650,500 50,500Z" />
    <path fill="#dddddd" d="M50,500 650,500 700,750 0,750Z" />
    <path fill="#eeeeee" d="M0,750 700,750 650,1000 50,1000Z" />
  </svg>
  <div id="slant1" class="slant">
    <div>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris mi odio, fermentum eget ex sed, tincidunt consectetur enim. Suspendisse viverra commodo ultrices. In eu facilisis leo, quis consectetur ex. Nam congue fringilla elit, ac mattis velit dictum ac. Donec tincidunt placerat ligula fermentum vulputate. Sed malesuada orci sit amet enim euismod, et euismod nunc pretium. Ut molestie et sem eu consectetur. Praesent fringilla elit enim, a convallis nulla sodales id. Sed tristique cursus libero. Cras ac magna id nisl pulvinar iaculis eu sit amet velit.
    </div>
  </div>
  <div id="slant2" class="slant">
    <div>
      <img src="http://lorempixel.com/500/200/people" alt="Random Picture" />
    </div>
  </div>
  <div id="slant3" class="slant">
    <div>
      Vivamus interdum facilisis justo ut fermentum. Cras turpis diam, efficitur sit amet mi sit amet, dapibus fermentum odio. Aenean fermentum tincidunt placerat. Vivamus dictum, diam quis elementum laoreet, lacus ex consectetur neque, eget fringilla ipsum neque nec sem. Ut eget venenatis urna, quis feugiat orci. Pellentesque vel interdum ante. Nulla blandit ex quam, non sollicitudin lectus laoreet nec. Integer vitae finibus elit. Duis pellentesque turpis odio, sit amet convallis libero blandit et. Maecenas accumsan est eros, vel scelerisque nulla scelerisque sit amet.
    </div>
  </div>
  <div id="slant4" class="slant">
    <div>
      Duis non placerat nisi, in maximus tellus. Nullam in interdum nunc, sed tempus nunc. Suspendisse lorem nisi, blandit vel odio ac, varius rhoncus sem. Phasellus quis placerat enim, id iaculis eros. Nunc at egestas nisi. Nulla in dui mattis, lacinia lectus ac, commodo ligula. Fusce fringilla vitae magna sit amet dignissim. Fusce quis elit elementum, faucibus eros id, facilisis mi. In vitae accumsan tellus. Quisque venenatis lacus urna, volutpat luctus eros feugiat id. Duis pretium pulvinar molestie. Nulla eget rhoncus sapien.
    </div>
  </div>
</div> <!--closes columnwrapper-->

SVG的一个优点是大多数浏览器都支持它(使用以前的transform解决方案,您可能会发现IE的一些问题需要调整)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34258466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档