Подтвердить что ты не робот

Как удалить только верхнюю часть теневого окна?

Я использую border-radius и box-shadow, чтобы создать свечение вокруг элемента.

Можно ли удалить только верхнюю часть box-shadow?

Живой пример

div {
    margin-top: 25px;
    color: #fff;
    height: 45px;
    margin-top: -5px;
    z-index: -10;
    padding: 26px 24px 46px;
    font-weight: normal;
    background: #000; /*#fff;*/
    border-top: 0px solid #e5e5e5;
    border-left: 1px solid #e5e5e5;
    border-right: 1px solid #e5e5e5;
    border-bottom: 1px solid #e5e5e5;
    -webkit-border-radius: 3px;
     -khtml-border-radius: 3px;
       -moz-border-radius: 3px;
            border-radius: 3px;
    -webkit-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
     -khtml-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
       -moz-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
            box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
}

Изменить: эта маленькая вещь - проблема! enter image description here

4b9b3361

Ответ 1

Это работает, но я признаю, что не знаю, есть ли лучший способ (или, если возможно, без добавления элемента оболочки). Использование нескольких box-shadow было бы хорошей идеей, но я не могу заставить ее выглядеть одинаково.

Смотрите: http://jsfiddle.net/thirtydot/8qEUc/3/

HTML:

<div id="bla">
    <div> something </div>
</div>

CSS

#bla {
    overflow-y: hidden;
    padding: 0 10px 10px 10px;
    margin: 0 -10px
}
#bla > div {
    /* the CSS from your question here */
}

Ответ 2

Поскольку вы используете box-shadow, вы можете использовать псевдоэлемент, чтобы создать его и разместить под своим div, поместив его так, чтобы были видны только необходимые части: http://jsfiddle.net/kL8tR/60/

Есть несколько важных примечаний:

  • Псевдоэлемент должен иметь z-index: -1
  • Сам div должен иметь position: relative и no z-index

Псевдоэлементы + CSS3 = удивительность:)

Ответ 3

@milo; не ваша верхняя граница - это shadow, которую вы указываете в своем коде

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

Запишите это в теневой CSS:

box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-moz-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-webkit-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-khtml-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;

& вы можете генерировать здесь http://css3generator.com/

ПРИМЕЧАНИЕ: существует четыре свойства тени: horizontal, vertical, blur & spread для внутренней тени вы можете определить inset для него

Ответ 4

Вы можете попробовать следующее. Мой метод использует только CSS.

Пример ссылки: http://jsfiddle.net/kL8tR/56/

div{
    margin-top: 25px;
    color: #fff;
    height: 45px;

    padding: 26px 24px 46px;

    border-left: 1px solid #e5e5e5;
    border-right: 1px solid #e5e5e5;
    border-bottom: 1px solid #e5e5e5;
    border-top: none;

    -moz-box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);
    -webkit-box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);
    box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);

}

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

Я использовал это раньше, вот моя ссылка:

Посмотрите раздел - Многоуровневые слои [http://www.css3.info/preview/box-shadow/]

Ответ 5

вы можете просто сдвинуть нижнюю вниз тень (вертикальное смещение) и уменьшить радиус тени, что-то вдоль линий (замените звездочку на количество пикселей, необходимых, чтобы просто покрыть верхнюю тень с помощью самого окна):

box-shadow: 0 *px 10px 0 rgba(200,200,200,0.7);

Ответ 6

Если вы используете отрицательный радиус разброса и откалибруете другие параметры в соответствии с тем, что вы ищете, это даст вам желаемый эффект.

CSS Box Shadow

div {
  height: 100px;
  width: 100px;
  border: solid 1px black;
  -webkit-box-shadow: 5px 5px 10px -6px black;
  -moz-box-shadow: 5px 5px 10px -6px black;
  box-shadow: 5px 5px 10px -6px black;
}
<div></div>