<h1 class="ribbon">
<strong class="ribbon-content">Everybody loves ribbons</strong>
</h1>
.ribbon {
font-size: 16px !important;
/* This ribbon is based on a 16px font side and a 24px vertical rhythm. I've used em's to position each element for scalability. If you want to use a different font size you may have to play with the position of the ribbon elements */
width: 50%;
position: relative;
background: #ba89b6;
color: #fff;
text-align: center;
padding: 1em 2em; /* Adjust to suit */
margin: 2em auto 3em; /* Based on 24px vertical rhythm. 48px bottom margin - normally 24 but the ribbon 'graphics' take up 24px themselves so we double it. */
}
.ribbon:before, .ribbon:after {
content: "";
position: absolute;
display: block;
bottom: -1em;
border: 1.5em solid #986794;
z-index: -1;
}
.ribbon:before {
left: -2em;
border-right-width: 1.5em;
border-left-color: transparent;
}
.ribbon:after {
right: -2em;
border-left-width: 1.5em;
border-right-color: transparent;
}
.ribbon .ribbon-content:before, .ribbon .ribbon-content:after {
content: "";
position: absolute;
display: block;
border-style: solid;
border-color: #804f7c transparent transparent transparent;
bottom: -1em;
}
.ribbon .ribbon-content:before {
left: 0;
border-width: 1em 0 0 1em;
}
.ribbon .ribbon-content:after {
right: 0;
border-width: 1em 1em 0 0;
}
保护层
此技巧对一些伪元素使用负的 z-index 值。这意味着它们可以位于具有不透明背景的其他元素后面,这会破坏效果。要解决此问题,您需要确保丝带的直接父元素没有应用背景,并且具有相对定位和正 z-index。如果需要,可以使用额外的包装器。
<div class="non-semantic-protector">
<!-- ribbons and other content in here -->
</div>
.non-semantic-protector { position: relative; z-index: 1; }
不错……我个人不认识不喜欢丝带的人 :)
我讨厌丝带。从未见过做得好的。例如,在这个例子中,丝带投射的阴影在哪里?
即兴发挥……本教程是为了向您展示如何在 CSS 中制作丝带,而不是为您进行所有修饰。深入了解 webkit 的功能,因为 drop shadowing 并非在所有浏览器中都起作用。
将其添加到您的丝带上,它将在 Firefox 中起作用.. 此外,您可以通过调整十六进制中的 alpha 水平来更改不透明度。
-moz-box-shadow: 3px 3px 4px #999;
-webkit-box-shadow: 3px 3px 4px #999;
下次不要这么快就开口,这个人通过为我们提供一个很好的参考场所来帮助我们所有网页设计师,这是对我们的一种恩惠。在您学习所有这些不同语言时,没有人会牵着您的手,所以不要太快就贬低那些试图提供帮助的人。
我太喜欢这个了!!!!
@Chris Howard:这已经晚了 7 年,但是,这里有一个带阴影的丝带。有什么不喜欢的? https://codepen.io/anon/pen/pKpBvr
我非常喜欢这个!!
上周我一直在 Photoshop 中很难做到这一点。我很高兴也有 CSS 方法!代码确实有很多行。但非常感谢您想到这一切。您确实在您的教程和屏幕截图中投入了大量时间和精力!我真的很感谢您所做的一切,Chris。谢谢
——Attila
有没有办法使其在 IE 8 及以下版本中工作?
我正在运行 IE8,此处的示例不起作用,但 James 的参考 URL 非常有效…
http://jameskoster.co.uk/blog/pure-css-3d-ribbon/
我快速比较了 CSS,但没有发现任何不同之处……但解决方案就在某个地方。
我喜欢这个丝带,边缘锐利,但它不使用图形这一事实某种程度上令人鼓舞。感谢分享。
您可以使用 html5shiv 使其在 IE 8 中工作
哇,感谢分享,非常有趣……这真的很棒!
我喜欢使用伪元素——迫不及待地想尝试一下,并感谢分享。
谢谢,伙计,我喜欢它!!
感谢分享。
我尝试过几次,想知道它在导航菜单中作为栏的效果如何。
效果非常好,刚刚在一个使用 Bootstrap 制作的响应式导航菜单中实现了代码!:D
您好,
喜欢本教程。我唯一无法弄清楚的是如何在 WordPress 菜单中实现它?
该菜单使用以下代码构建
‘header’, ‘container’ => ” ) ); ?>
我不明白的是如何创建额外的类来添加 CSS 代码?
此致,
Jonas
代码的呈现出现了一些错误。我已经在 CSS 论坛中就此问题发布了一个主题。
希望有人能帮我解决?
https://css-tricks.cn/forums/discussion/13611/my-wordpress-menu-with-a-ribbon
Jonas Smets
此方法适用于在 WordPress 菜单中添加类
wp_nav_menu( array( ‘container_class’ => ‘menu-header’ 等
尝试了一些其他修改,以便徽标与丝带(带导航)重叠,但不知何故,除了 Firefox 之外的其他浏览器均无法正常工作。(不使用 CSS 技巧)
我仍在使用丝带导航的项目,本教程非常有用。
感谢作者!
非常酷,我不知道可以在 CSS 中做到这一点。
但是,有人有针对 IE8 及以下版本的此效果的技巧吗?因为它在这些浏览器中不起作用,这意味着我只能将其用于个人项目,而不能用于其他任何项目。
使用此处找到的技巧来定位 IE8 及以下版本
http://net.tutsplus.com/tutorials/html-css-techniques/quick-tip-how-to-target-ie6-ie7-and-ie8-uniquely-with-4-characters/
我删除了形成丝带尖端的边框
border: 0\9; /* IE8 及以下版本 */
因此,现在较旧版本的 IE 显示一个普通矩形,而不是一个支离破碎的伪丝带。丝带在所有其他浏览器中仍如上所示。它可能很无聊,但至少看起来没有损坏。
@Chrizzi 这非常有用,谢谢!很高兴知道这种效果可以优雅地回退。太棒了!
真的很喜欢这个技巧!
但是我想知道如何使用 CSS 创建这种类型的丝带
http://img822.imageshack.us/img822/4185/ribboni.jpg
我们能否自动调整丝带高度,以便我可以键入更长/更短的文本内容,而无需手动重新调整 CSS 高度参数?
http://codepen.io/kayandrae/full/hquJL
我尝试了一下你的丝带标签 :)
http://jsfiddle.net/y0ehvok6/
我相信 IE8 问题无法修复,但我们可以做的一件事是以另一种方式设置丝带,即好像侧面在内容之前而不是在后面。
您可以通过简单地删除 z-index:-1; 行并替换
border-color: #804f7c transparent transparent transparent;
bottom: -1em;
为
border-color: #804f7c transparent #804f7c transparent;
top:0;
在 .ribbon .ribbon-content:before, .ribbon .ribbon-content:after {…} 声明中
您可能还想在 .ribbon:before, .ribbon:after {…} 上设置 top:1em;。
这样,如果您的内容占用两行,内容就不会中断。
那么如何制作一个没有“折叠”的丝带呢?我想到的是为活动页面的链接做一个带有丝带背景的侧边栏。类似于这种形状
http://www.photoshopstar.com/wp-content/uploads/2008/03/ribbon-filled-yellow.jpg
或者……如何制作一个两侧都有相同三角形切割的丝带呢?
我想用列表项来做,而不是div。有什么想法吗?
看看jacklmoore的网站
太棒了……我其实两天前就在找这个……用Photoshop想不出来……!!
谢谢……!
是的,我想每个人都喜欢丝带,包括我。我想知道如何将这个丝带制作成html菜单?是不是只能用href?谢谢。
如果你想把它用作html菜单,只需将导航的
<ul>
嵌入到.ribbon-content中。还有其他人遇到移动端的问题吗?具体来说,z-index
似乎被忽略了,导致横幅的两端位于主丝带之上。在桌面浏览器上效果很好,但在我的安卓手机上的chrome浏览器中,角部位于顶部。感谢提供这个。我想修改这个结果,但我不理解它是如何工作的。对css进行逐步注释,说明每一部分的作用将非常有帮助。有没有人创建过这种类型的注释?
我尤其对CSS中的ribbon:before、ribbon-content:before和:after行感到困惑
谢谢
不错的教程——我实际上在我的网站上创建了一个类似的演练。但是,我的丝带环绕着一个盒子元素,并且还有一个投影。使用了相同的:before和:after技术。http://www.designcouch.com/demos/pure-css-ribbon-banner.html
我刚开始在我的网页中创建丝带设计,这个教程帮助我很多!非常感谢!你的教程真是太棒了!我向你致敬!
太棒了!正是我的项目所需的点睛之笔。
好文章!
我也写过关于丝带的文章
http://techisquest.blogspot.com/2013/09/css-3d-ribbons-and-stitched-effect.html
伪代码(例如after和before)在ie7和ie8中不起作用
那个非语义保护代码刚刚修复了我使用伪元素和Foundation 4时遇到的一个关于花哨盒阴影(例如抬高的角)的问题。除非
<body>
和父容器标签都具有background:none
,否则它们不会出现。向父div添加{ position: relative; z-index: 1; }
修复了它。太棒了!对于仍然需要定位IE8的用户,有一种稍微不那么语义化的方法可以工作
在.ribbon-content之前添加一个.ribbon-style元素
将样式从.ribbon :before和:after移动到.ribbon > .ribbon-style:before和:after
从.ribbon中移除padding和background-color,并将它们应用到.ribbon-content
这是一个演示示例:http://jsfiddle.net/Sly_cardinal/m8U2t/1/
HTML
CSS
很棒的文章!
我想调整此示例以使其适用于表格标题。你能帮我吗?
http://jsfiddle.net/qU7Ba/1/
太棒了,兄弟!!!!!!!
我看到了你的漂亮的丝带,我展示我的:http://cybernext.in/
查看底部的丝带。
由于使用了
z-index:-1;
,它巧妙地嵌套在父div的阴影下方。这是代码
一般般。无意冒犯,但那里有很多过度设计。
没关系。我还有很多东西要学。。
PS:你的评论和你的图片很搞笑
相反,如果你有任何建议,我将不胜感激
Vin——很高兴看到有人愿意接受批评!我倾向于不主动给出批评,因为很多人会把它当作针对个人。
一些建议
不要设置光标样式。这是不必要的,并且会干扰用户体验
避免不必要的边框和盒子。内容的分隔应该由空白和内容放置等暗示,而不是文字边框
为了装饰而进行的装饰(如丝带上的虚线边框)是不好的设计
你过度使用了投影
不要居中无序列表;项目符号应该始终对齐
了解并正确使用空白
你的3D界面实际上非常有趣,如果做得好的话,会非常棒
这些只是一些起点,根本不是批评;它们是批判。 之前写过一篇关于这方面的文章。
谢谢兄弟!我会记下这些,并在有时间的时候更新网站。
有没有办法将这个丝带做成超链接?
我更改了
到
但这不起作用
开玩笑的!
Marz,这很容易
将
<a>
标签放在父元素之前。将此
更改为此
谢谢Chris。
我个人讨厌丝带,但客户很喜欢它们 :)
创建丝带的简单方法,http://codepen.io/jeffpowrs/pen/oaLul
还不错。复制了你的,并简化了代码。我删除了你的span,以及相关的额外伪元素,方法是利用了剩余伪元素的内容区域。
http://codepen.io/designcouch/pen/qwEFe
非常棒的提示!感谢分享:)!
太棒了!非常感谢!我希望你能帮助我解决我遇到的一个关于动画丝带位置的问题。请查看我的JSFiddle:http://jsfiddle.net/vf75sbgm/
再次感谢!
如果我想使用多个不同颜色的丝带,如何切换每个丝带的颜色?
我怎样才能把它向下移动?我想把它放在这个盒子的下面,但当我尝试时,它消失了。
屏幕截图:http://i.imgur.com/lTtuuMa.png
这是一个Z-index(分层)问题,消失(位于下方)的边缘的z-index值为-1,而你的div盒子的z-index值更大。调整z-index,你应该就能得到正确的结果。更多关于z-index的信息:https://mdn.org.cn/en/docs/Web/CSS/z-index
是的!!很棒
很棒的丝带代码。我不知道你是否还会查看你的旧文章,但我注意到当你将丝带放在透明图像上时(无论你是否使用CSS添加了图像的透明度),丝带边缘都会变得半透明。这发生在我写这篇文章时的最新版Chrome浏览器中
我在上面回答了自己的问题,这是因为我设置了z-index的方式。
此代码和提到的变体不能用于电子邮件。参见:https://www.xc.hu/tmp/ribbon.html
一般来说,电子邮件应用程序支持的CSS属性少于普通网页浏览器。以下是我在构建电子邮件时一直保存在备忘录中的一个很好的参考:https://www.campaignmonitor.com/css/
简单,可爱,我们喜欢它
太棒了……非常感谢这个例子……它帮助我很多……
我有一点不明白的是,通过执行border-left-color: transparent; 如何使形状变成三角形?
您好,是否有带额外div或容器的示例,丝带“包裹”在该容器周围,以便此辅助div可以具有背景颜色或图像,然后丝带“位于顶部”,两侧悬挂在第二个div上?
嗨!您可能需要稍微调整一下,但以下是一种可能的方法