使用CSS3创建这个形状

4

我希望只使用CSS就能够创建这个形状。我相信这是可以实现的,但是我在处理渐变时遇到了麻烦。

这个形状将包含一些文本。建议使用以下HTML标记:

<div class="container">
    ... more html contents...
</div>

需要创建的形状

十分感谢,jsFiddle 将会非常受欢迎。


你尝试过什么?你如何期望在纯CSS中没有图像的情况下绘制这样一个不规则形状? - Alex W
如果你看到它,它看起来很不规则。我可以被看作是两个矩形。大的那个显而易见。右上角的小矩形有一半对角线是透明的。只是想知道是否有任何技巧可以遵循来编写CSS。 - Saurabh Kumar
3个回答

9
请试试这个:http://jsfiddle.net/HshfF/1/ CSS:(来自此评论中的示例代码)
.main {
    background: -moz-linear-gradient(top, #ffffff 0%, #e8e8e8 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e8e8e8)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* IE10+ */
    background: linear-gradient(to bottom, #ffffff 0%,#e8e8e8 100%); /* W3C */
    position: relative;
    width: 150px;
    height: 100px;
    margin: 10px;
    border: 1px solid #d0d0d0;
    border-radius: 10px;
    padding: 20px;
}

.main:before {
    content: '';
    display: block;
    top: -1px;
    right: -1px;
    width: 20px;
    height: 20px;
    background: -moz-linear-gradient(top, #ffffff 0%, #e8e8e8 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#e8e8e8)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #ffffff 0%,#e8e8e8 100%); /* IE10+ */
    background: linear-gradient(to bottom, #ffffff 0%,#e8e8e8 100%); /* W3C */
    position: absolute;
    border-radius: 0 0 0 5px;
    border-left: 1px solid #d0d0d0;
    border-bottom: 1px solid #d0d0d0;
}

.main:after {
    content: '';
    display: block;
    position: absolute;
    top: -1px;
    right: -1px;
    border-top: 20px solid #fff; 
    border-left: 20px solid transparent;
}

我无法确定在哪里放置内容。我应该能够放置一些像<p>这样的内容。 - Saurabh Kumar
你可以将内容放置在主div中,还可以添加一些padding。就像这个例子:http://jsfiddle.net/HshfF/2/ - zen
谢谢!我很想知道您是否认为这也可以使用伪元素来实现。 - Saurabh Kumar
可以使用 :before 来实现这个功能。 - zen
这里使用伪元素 before 和 after 来实现,以下是代码:http://jsfiddle.net/HshfF/3/ - zen

2

谢谢...让我看看它们。颜色显然不是一个大问题。 - Saurabh Kumar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接