Размытое фоновое изображение, а не текст

0

Я использую плагин Unslider на своем веб-сайте, и я хочу размыть только изображение во всех браузерах и, но не текст.

Демо-версия:

http://www.pure-energy.org

CSS:

.imagecarousel {
    position: relative;
    overflow: auto;
    font-size: 18px;
    line-height: 24px;
    // text-shadow: 0 0 1px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.3);
}
.imagecarousel li {
    list-style: none;
}
.imagecarousel ul{
    padding: 0;
}
.imagecarousel h1{
    color: black;
    font-size: 40px;
    line-height: 52px;
    margin-bottom: -10px;
    font-family: 'Bree Serif';
}
.imagecarousel p{
    font-family: 'Droid Sans';
    font-size: 25px;
    color: white;
}
.caption{
    position: absolute;
    top: 0px;
    padding-left: 30px;
}
.imagecarousel ul li {
    float: left;
    box-shadow: 0 -3px 6px rgba(0, 0, 0, 0.1) inset;
    display: block;
    background-position: cover;
    min-height: 800px;
    opacity: 0.5;
    z-index: -1;
}
.imagecarousel ul li:nth-child(1){
    background: url("/assets/geothermal-075276b7c15388514315dcd1af293b2f.png") no-repeat center center;
}
.imagecarousel ul li:nth-child(2){
    background: url("/assets/solar-46b6cfecb2169a3d14552f90196a56fb.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(3){
    background: url("/assets/solar-588b14f01de3029cf161325a427415b5.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(4){
    background: url("/assets/carouselwind-2b6e053bfbb20a5390c0f3df349444d0.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(5){
    background: url("/assets/wind-adf42dcd750ba3b7a6508b99890b247b.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(6){
    background: url("/assets/wind-ee6159e5689bd3475afc83cefc876069.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(7){
    background: url("/assets/solarpanels-84a5f0e1c22b63f08f42c13cff323d08.jpg") no-repeat center center;
}
.imagecarousel ul li:nth-child(8){
    background: url("/assets/carouselhydro-4b48400ed37f87fd57390933a874ced5.jpg") no-repeat center center;
}
.imagecarousel ul li:before{
    filter: blur(5px);
    -webkit-filter: blur(5px);
    moz-filter: blur(5px);
    -o-filter: blur(5px);
    -ms-filter: blur(5px);
    // filter: url(#blur);
    // filter: blur(3px);
    // filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='3');
}

HAML:

.imagecarousel.has-dots
  %ul
    %li
      / %svg{version: "1.1", xmlns: "http://www.w3.org/2000/svg"}
      /   %filter#blur
      /     %fegaussianblur{stddeviation: "3"}
      .caption
        %p The future is in our hands.
    %li
      .caption
        %p Energy is awesome.
    %li
      .caption
        %p Clean. Safe. Efficient.
    %li
      .caption
        %p Caption 1
    %li
      .caption
        %p Caption 2
    %li
      .caption
        %p Caption 3
    %li
      .caption
        %p Caption 4
    %li

Может кто-то указать мне верное направление? В этом сообщении используется тег :before для элемента body. Я пробовал это на li и это не сработало.

Релевантные ссылки Я посмотрел:

http://codepen.io/anon/pen/DzLBf

Могу ли я применять фильтры CSS (3) ТОЛЬКО на участках изображения?

размытие только фонового изображения

1 ответ

1
Лучший ответ

Идите по пути наименьшего сопротивления: просто сохраните размытое изображение под названием "... -blurred.jpg" (или png или т.д.) И просто используйте element:hover { background-image: url('...-blurred.jpg'); } element:hover { background-image: url('...-blurred.jpg'); }.

Престо, на мыши на фоне, теперь размыто, и текст не тронут.

(и после того, как он кэшируется, размытие моментально, а не любая альтернатива, требующая обработки, которую вы можете придумать. Если вы не напишете свое собственное кэширование для этого, в этом случае вам действительно нужно задаться вопросом, почему вы изобретаете все колеса = )

  • 0
    Спасибо, не могу поверить, я не мог думать об этом сам!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню