Радиальный градиент CSS с ограничениями ширины? - PullRequest
4 голосов
/ 23 декабря 2010

Вот градиент кнопки, который я пытаюсь создать только с помощью CSS-градиентов:

alt text

Как правило, это было бы довольно легко сделать, но, как вы можете видеть, градиент вверху больше похож на большой ограниченный радиальный градиент, так как он немного опускается в середине и не распространяется полностью до края.

Итак, есть идеи, как осуществить это с помощью CSS?

Ответы [ 4 ]

6 голосов
/ 24 декабря 2010

В css центр радиального фона не может находиться вне его контейнера, но вы можете сместить радиальный фон, установив дочерний элемент с градиентом. В основном вы хотите сделать что-то вроде этого:

gradient

, что близко к превосходному решению simshaun. Но так как я люблю испытания, я хотел попробовать что-то с нулевой дополнительной разметкой, я придумал это:

alt text

http://jsfiddle.net/xB4DU/

Что очень близко подходит к вашему решению с нулевой дополнительной разметкой. Это просто линейный градиент со вставленной тенью, который ослабляет левый и правый края кнопки.

4 голосов
/ 23 декабря 2010

Это определенно потребует некоторой настройки, чтобы он выглядел правильно в различных браузерах (что я на самом деле не сделал):

CSS

.upgrade {
    background: #FF3397;
    color: #FFF;
    float: left;
    height: 30px;
    line-height: 30px;
    position: relative;
    text-align: center;
    width: 160px;

    -webkit-box-shadow:  0px 0px 3px #999;
    -moz-box-shadow:  0px 0px 3px #999;
    box-shadow:  0px 0px 3px #999;
    -moz-border-radius: 5px;
    border-radius: 5px;
    text-shadow: 1px -1px 3px #E60071;
    filter: dropshadow(color=#666, offx=2, offy=-2);

    font-family: Verdana, Sans-Serif;
    font-size: 12px;
    font-weight: bold;
}

.upgrade span {
    background-image: -moz-radial-gradient(50% 50% 90deg,ellipse contain, #FFFFFF, rgba(255, 255, 255, 0));
    background-image: -webkit-gradient(radial, 50% -50%, 51, 50% 0, 110, from(#FFFFFF), to(rgba(255, 255, 255, 0)));
    display: block;
    height: 100px;
    left: -50px;
    position: absolute;
    top: -70px;
    width: 260px;
    z-index: 1;
}
.upgrade div {
    z-index 2;
}

HTML

<div class="upgrade"><span></span><div>Upgrade for more</div></div>

http://jsfiddle.net/AvkTH/3/

1 голос
/ 23 декабря 2010

Просто для удовольствия я бросил это вместе, но кто знает, что это будет делать за пределами Chrome. Я никогда раньше не играл с радиальными градиентами, но это было весело - я подумал, что, возможно, мой (Ужасный) CSS сможет пролить свет на ваш проект.

CSS:

#button {
display: table;
-moz-border-radius: 5px;
border-radius: 5px;
margin: 50px auto;
padding: 10px;
background: 
    -webkit-gradient(radial, 50% -200%, 180, 50% -110%, 35, from(#f81499), to(#fff), color-stop(.7,#f81499));
color: #fff;
text-shadow: 0px -1px 0 rgba(0,0,0,.25);
font-family: "droid sans", sans-serif;
font-size: 13px;
-webkit-box-shadow: 0px 1px 0px rgba(0,0,0,0.25);

}

HTML:

<html>
 <head>
  <title></title>
  <link type="text/css" href="test.css" rel="stylesheet" />
 </head>
 <body>
  <div id="button">Upgrade for more</div>
 </body>
</html>
1 голос
/ 23 декабря 2010

Не полный ответ, но это может быть полезно.

http://css -tricks.com / CSS3-градиентов /

У Криса есть пример:

http://css -tricks.com / примеры / CSS3Gradient /

с радиальным градиентом. Это использует CSS3 и специфичные для браузера реализации, которые могут не поддерживаться в старых браузерах.

В противном случае, я не знаю способа осуществить это без использования изображений.

Надеюсь, это поможет.

Bob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...