如何斜角块div的角落?

时间:2013-05-25 09:57:25

标签: html css css3 css-shapes

我有以下HTML文档:

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <title>Тег DIV</title>
        <style type="text/css">
            .block1 { 
                width: 200px; 
                background: #ccc;
                padding: 5px;
                padding-right: 20px; 
                border: solid 1px black; 
                float: left;
            }
        </style> 
    </head>
    <body>
        <div class="block1">Text Content</div>
    </body>
</html>

如何描述获得以下内容的样式? enter image description here

4 个答案:

答案 0 :(得分:3)

直到CSS4 border-corner-shape属性is in danger!it's not implemented,这可以通过使用CSS3转换(以保持border属性免费进一步使用)来完成:

<强> HTML:

<div class="box">
  Text Content
</div>

<强> CSS:

.box {
  width: 200px; 
  height: 35px;
  line-height: 35px;
  padding: 0 5px;
  background-color: #ccc;
  padding-right: 20px;
  border: solid 1px black;
  border-right: 0;  
  position: relative;
}

.box:after {
  content: "";
  display: block;
  background-color: #ccc;
  border: solid 1px black;
  border-left: 0;
  width: 35px;
  height: 35px;
  position: absolute;
  z-index: -1;
  top: -1px; /* pull it up because of 1px border */
  right: -17.5px; /* 35px / 2 */
  transform: skew(-45deg);
  -o-transform: skew(-45deg);
  -moz-transform: skew(-45deg);
  -webkit-transform: skew(-45deg);
}

这是 JSBin Demo

注意:上面示例中的另一个div具有class的{​​{1}}属性,它在不使用您可能考虑使用的CSS3声明的情况下实现;)

答案 1 :(得分:0)

最有可能的是,它可以使用隐形边框技巧完成。网上有一些“三角形生成器”,例如this一个

答案 2 :(得分:0)

这是Solution

CSS和HTML:

&#13;
&#13;
    ul {
      position: relative;
      overflow: hidden;
      font: 14px Arial;
      margin: 0;
      padding: 0;
      list-style: none;
      text-align: center;
    }
    ul:before {
      content: "";
      position: absolute;
      z-index: -1;
      left: 124px;
      margin-left: -120px;
      width: 0;
      border-left: 0 solid transparent;
      border-right: 230px solid transparent;
      border-top: 179px solid #CCCCCC;
    }
    li {
      height: 3.8em;
      line-height: 3em;
      position: relative;
      margin-left: -562px;
    }
    li:after,
    li:before {
      content: "";
      display: block;
      height: 0.4em;
      background: #fff;
      width: 100%;
    }
&#13;
<ul>
  <li>Text Content</li>
</ul>
&#13;
&#13;
&#13;

您必须使用border-width属性来获取所需的输出。

希望这有帮助。

答案 3 :(得分:0)

如果我描述这样的文件:

<!DOCTYPE HTML>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тег DIV</title>
  <style type="text/css">
   .block1 { 
    width: 300px;
    height: 0px;
    border-style: solid;
    border-width: 200px 200px 0 0;
    border-color: #f200ff transparent transparent transparent;
   }
  </style> 
 </head>
 <body>
  <div class="block1">Text Content</div>
 </body>
</html>

我几乎得到你所需要的,但我不明白为什么文字不在图中?