简体   繁体   English

CSS中的角度标题

[英]Angled headings in CSS

Does anyone have any ideas to achieve this angled heading effect with CSS only? 有没有人有任何想法只用CSS实现这种角度标题效果?

有角度的标题

The box shadow shouldn't be a problem using a generator like this , but I'm unsure on the angled edges - perhaps CSS3's transform? 使用像这样的生成器,盒子阴影不应该是一个问题,但我不确定角度边缘 - 也许是CSS3的变换?

Write this: 写这个:

h1{
    font-size:24px;
    display:inline-block;
    position:relative;
    margin:20px;
}
h1:after{
    content:'';
    position:absolute;
    top:0;
    bottom:0;
    left:-10px;
    right:-10px;
    background:red;
    z-index:-1;
    -moz-transform: skew(-25deg);
   -webkit-transform: skew(-25deg);
    box-shadow:3px 3px 0 0 #000;
    -moz-box-shadow:3px 3px 0 0 #000;
    -webkit-box-shadow:3px 3px 0 0 #000;
}

Check this http://jsfiddle.net/RP356/ 检查这个http://jsfiddle.net/RP356/

You can achieve that with just transform:skew(): 只需转换即可实现:skew():

transform:skew(-30deg,0);
-ms-transform:skew(-30deg,0); /* IE 9 */
-moz-transform:skew(3-0deg,0); /* Firefox */
-webkit-transform:skew(-30deg,0); /* Safari and Chrome */
-o-transform:skew(-30deg,0); /* Opera */

As you can see here . 正如你在这里看到的那样。

PS However keep in mind the “Heading” text and the skewed part have to be separate elements to avoid affecting the text too. PS但是请记住“标题”文本和倾斜部分必须是单独的元素,以避免影响文本。

(In case the text is a child, you could set it straight using the opposite transformation: transform:skew(30deg,0) .) (如果文本是孩子,你可以使用相反的变换直接设置: transform:skew(30deg,0) 。)

Yes it is transform. 是的,它是变革。 Following css does it for -20 degrees. 以下css是-20度。 and a white shadow 和一个白色的影子

.box {
   -moz-transform: scale() rotate(0deg) translate(0px, px) skew(-20deg, deg);
   -webkit-transform: scale() rotate(0deg) translate(0px, px) skew(-20deg, deg);
   -o-transform: scale() rotate(0deg) translate(0px, px) skew(-20deg, deg);
   -ms-transform: scale() rotate(0deg) translate(0px, px) skew(-20deg, deg);
   transform: scale() rotate(0deg) translate(0px, px) skew(-20deg, deg);

   -webkit-box-shadow: 10px 10px 5px 5px #ffffff;
   -moz-box-shadow: 10px 10px 5px 5px #ffffff;
   box-shadow: 10px 10px 5px 5px #ffffff; 
}

In order to @SvenBieder answer, it is better to use something like this: 为了@SvenBieder的回答,最好使用这样的东西:

body {
    background: #ddd;
}

h1 {
    position: relative;
    font-family: sans-serif;
    color: #fff;
    width: 400px;
    margin: 20px;
    padding: 5px;
}

/* In CSS3 it is ::before, but IE doesn't support this */
h1:before {
    content: '';
    display: block;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: -5px;
    z-index: -1;
    background: #555;

    -webkit-transform: skew(-20deg);
    -moz-transform: skew(-20deg);
    -o-transform: skew(-20deg);
    -ms-transform: skew(-20deg);
    transform: skew(-20deg);

    -webkit-box-shadow: 10px 10px 0px 3px #ffffff;
    -moz-box-shadow: 10px 10px 0px 3px #ffffff;
    box-shadow: 10px 10px 0px 3px #ffffff;
}

Live example: http://jsfiddle.net/fjPbr/1/ 实例: http//jsfiddle.net/fjPbr/1/


It's better because it don't skew the content and it has less code. 它更好,因为它不会扭曲内容,而且代码更少。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM