Вопрос

У меня есть файл JPEG, который я использую в качестве фонового изображения для страницы поиска, и для его установки я использую CSS, поскольку работаю внутри Backbone.js контексты:

background-image: url("whatever.jpg");

Я хочу применить фильтр размытия CSS 3. только на фон, но я не уверен, как стилизовать только этот элемент.Если я попробую:

-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);

прямо под background-image в моем CSS он стилизирует всю страницу, а не только фон.Есть ли способ выбрать только изображение и применить к нему фильтр?Альтернативно, есть ли способ просто отключить размытие для всех остальных элементов на странице?

Это было полезно?

Решение

Проверьте это ручка.

Вам придется использовать два разных контейнера: один для фонового изображения, а другой для вашего контента.

В примере я создал два контейнера: .background-image и .content.

Оба они размещены с position: fixed и left: 0; right: 0;.Разница в их отображении связана с z-index значения, которые были установлены по-разному для элементов.

.background-image {
  position: fixed;
  left: 0;
  right: 0;
  z-index: 1;
  display: block;
  background-image: url('http://666a658c624a3c03a6b2-25cda059d975d2f318c03e90bcf17c40.r92.cf1.rackcdn.com/unsplash_527bf56961712_1.JPG');
  width: 1200px;
  height: 800px;
  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);
}

.content {
  position: fixed;
  left: 0;
  right: 0;
  z-index: 9999;
  margin-left: 20px;
  margin-right: 20px;
}
<div class="background-image"></div>
<div class="content">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend
    rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing,
    quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
  <p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum
    tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
</div>

Приносим извинения за Лорем Ипсум Текст.

Обновлять

Благодаря Мэтью Уилкоксон для лучшей реализации с использованием .content:before http://codepen.io/akademy/pen/FlkzB

Другие советы

pen

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

Достигнута с использованием

.content {
  overflow: auto;
  position: relative;
}
. Требуется автоматическое автоматическое переполнение, иначе фона будет смещенным несколькими пикселями сверху.

После этого вам просто нужно

.content:before {
  content: "";
  position: fixed;
  left: 0;
  right: 0;
  z-index: -1;

  display: block;
  background-image: url('img-here');
  background-size:cover;
  width: 100%;
  height: 100%;

  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);
}
.

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

Обновлена ручка здесь: https://codepen.io/anon/pen/qgyewb -Спасибо Чад Фаветт для предложения.

Как указано в других ответах, это может быть достигнуто с:

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

Вы также можете использовать backdrop-filter

Есть поддерживаемое свойство под названием backdrop-filter, и в данный момент Поддерживается в Chrome 76, жрать Safari, и iOS Safari (см. caniuse.com для статистики).

от mozilla devdocs :

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

Смотрите caniuse.com для статистики использования.

Вы бы использовали его так:

.background-filter::after {
  -webkit-backdrop-filter: blur(5px); /* Use for Safari 9+, Edge 17+ (not a mistake) and iOS Safari 9.2+ */
  backdrop-filter: blur(5px); /* Supported in Chrome 76 */

  content: "";
  display: block;
  position: absolute;
  width: 100%; height: 100%;
}

.background-filter {
  position: relative;
}

.background {
  background-image: url('https://upload.wikimedia.org/wikipedia/en/6/62/Kermit_the_Frog.jpg');
  width: 200px;
  height: 200px;
}
.
<div class="background background-filter"></div>
.

UPDATE (12/06/2019) : хром будет отправлен с generacodictagcode, включенный по умолчанию в версии 76, которая должен быть выделен 30/07/2019 .

Обновление (01/06/2019) : команда firefox mozzilla объявил «/a> », он начнет работать над реализацией этого в ближайшее время.

Обновление (21/05/2019) : хром Только что объявил «/a> backdrop-filter », доступен в Chrome Canarary без включения флага« Включить экспериментальную веб-платформу ». Это означает, что backdrop-filter очень близко к реализации на всех хромированных платформах.

Вам нужно повторно структурировать ваш html , чтобы сделать это.Вы должны размыть весь элемент, чтобы размыть фон.Так что, если вы хотите размыть только фоном, это должно быть его собственным элементом.

Пожалуйста, проверьте следующий код: -

.backgroundImageCVR{
	position:relative;
	padding:15px;
}
.background-image{
	position:absolute;
	left:0;
	right:0;
	top:0;
	bottom:0;
	background:url('http://www.planwallpaper.com/static/images/colorful-triangles-background_yB0qTG6.jpg');
	background-size:cover;
	z-index:1;
	-webkit-filter: blur(10px);
  -moz-filter: blur(10px);
  -o-filter: blur(10px);
  -ms-filter: blur(10px);
  filter: blur(10px);	
}
.content{
	position:relative;
	z-index:2;
	color:#fff;
}
.
<div class="backgroundImageCVR">
    <div class="background-image"></div>
    <div class="content">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing, quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
      <p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
    </div>
</div>
.

Ниже приведен простое решение для современных браузеров в чистых CSS с A 'перед Pseudo-элементом, как решение из Matthew Wilcoxson.

Чтобы избежать необходимости доступа к псевдому элементу для изменения изображения и других атрибутов в JavaScript, просто используйте inherit в качестве значения и доступа к ним через родительский элемент (здесь body).

body::before {
    content: ""; /* Important */
    z-index: -1; /* Important */
    position: inherit;
    left: inherit;
    top: inherit;
    width: inherit;
    height: inherit;
    background-image: inherit;
    background-size: cover;
    filter: blur(8px);
}

body {
  background-image: url("xyz.jpg");
  background-size: 0 0;  /* Image should not be drawn here */
  width: 100%;
  height: 100%;
  position: fixed; /* Or absolute for scrollable backgrounds */
}
.

в .content вкладка в CSS измените ее на position:absolute.В противном случае отображаемая страница не будет прокручиваться.

Хотя все упомянутые решения очень умны, все, казалось, имели незначительные проблемы или потенциальный стук на эффекты с другими элементами на странице, когда я пробовал их.

В конце концов, чтобы сэкономить время, я просто вернулся к своему старумую решению: я использовал paint.net И пошел к эффектам, гауссовский размытие с радиусом от 5 до 10 пикселей и просто сохранил, что как изображение страницы.: -)

html:

<body class="mainbody">
</body
.

CSS:

body.mainbody
{
    background: url('../images/myphoto.blurred.png');
    -moz-background-size: cover;
    -webkit-background-size: cover;
    background-size: cover;
    background-position: top center !important;
    background-repeat: no-repeat !important;
    background-attachment: fixed;
}
.

Редактировать:

Я наконец получил его работать, но решение ни в коем случае не имеет смысла!Смотрите здесь:

Все, что вам на самом деле нужно, это «фильтр»:

blur(«WhatEverYouWantInPixels»);"
.

body {
    color: #fff;
    font-family: Helvetica, Arial, sans-serif;
}

#background {
    background-image: url('https://cdn2.geckoandfly.com/wp-content/uploads/2018/03/ios-11-3840x2160-4k-5k-beach-ocean-13655.jpg');
    background-repeat: no-repeat;
    background-size: cover;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    z-index: -1;

    /* START */
    /* START */
    /* START */
    /* START */

    /* You can adjust the blur-radius as you'd like */
    filter: blur(3px);
}
.
<div id="background"></div>

<p id="randomContent">Lorem Ipsum</p>
.

Конечно, это не CSS-решение, но вы можете использовать CDN Proton с filter:

body {
    background: url('https://i0.wp.com/IMAGEURL?w=600&filter=blurgaussian&smooth=1');
}
.

Это от https://developer.wordpress.com/docs/photon/ api / # фильтр

Я не написал это, но я заметил, что там был многолифик для частично поддерживаемого генеракодицетагода, используя компилятор CSS SASS, поэтому, если у вас есть компиляционный трубопровод, он может быть достигнут хорошо (он также использует Teamscript):

https://codepen.io/mixal_bl4/pen/ewpmwo

div {
    background: inherit;
    width: 250px;
    height: 350px;
    position: absolute;
    overflow: hidden;  /* Adding overflow hidden */
}

div:before {
    content: ‘’;
    width: 300px;
    height: 400px;
    background: inherit;
    position: absolute;
    left: -25px;  /* Giving minus -25px left position */
    right: 0;
    top: -25px;   /* Giving minus -25px top position */
    bottom: 0;
    box-shadow: inset 0 0 0 200px rgba(255, 255, 255, 0.3);
    filter: blur(10px);
}
.

Этот ответ предназначен для Дизайн материала горизонтальный макет карточки с динамической высотой и изображением.

Чтобы предотвратить искажение изображения из-за динамической высоты карты, вы могли бы использовать фоновое изображение-заполнитель с размытием для корректировки изменений высоты.

 

Объяснение

  • Карточка содержится в <div> с классом обертка, который представляет собой flexbox.
  • Карточка состоит из двух элементов: изображения, которое также является ссылкой , и содержимого.
  • Связь <a>, класс Ссылка, позиционируется относительный.
  • Ссылка состоит из двух подэлементов, заполнителя <div> класс размытие и еще <img> класс рис . это и есть четкое изображение.
  • Оба расположены абсолютный и иметь width: 100%, но класс рис . имеет более высокий порядок стека, т.е., z-index: 2, который помещает его над заполнителем.
  • Фоновое изображение для размытого заполнителя устанавливается с помощью встроенный стиль в HTML-формате.

 

Код

.wrapper {
  display: flex;
  width: 100%;
  border: 1px solid rgba(0, 0, 0, 0.16);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16), 0 1px 1px rgba(0, 0, 0, 0.23);
  background-color: #fff;
  margin: 1rem auto;
  height: auto;
}

.wrapper:hover {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}

.link {
  display: block;
  width: 200px;
  height: auto;
  overflow: hidden;
  position: relative;
  border-right: 2px solid #ddd;
}

.blur {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  width: 100%;
  height: 100%;
  filter: blur(5px);
  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
}

.pic {
  width: calc(100% - 20px);
  max-width: 100%;
  height: auto;
  margin: auto;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
}

.pic:hover {
  transition: all 0.2s ease-out;
  transform: scale(1.1);
  text-decoration: none;
  border: none;
}

.content {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  padding: 20px;
  overflow-x: hidden;
}

.text {
  margin: 0;
}
<div class="wrapper">
  <a href="#" class="link">
    <div class="blur" style="background: url('http://www.planwallpaper.com/static/assets/img/header.jpg') 50% 50% / cover;"></div>
    <img src="http://www.planwallpaper.com/static/assets/img/header.jpg" alt="Title" class="pic" />
  </a>

  <div class="content">
    <p class="text">Agendum dicendo memores du gi ad. Perciperem occasionem ei ac im ac designabam. Ista rom sibi vul apud tam. Notaverim to extendere expendere concilium ab. Aliae cogor tales fas modus parum sap nullo. Voluntate ingressus infirmari ex mentemque ac manifeste
      eo. Ac gnum ei utor sive se. Nec curant contra seriem amisit res gaudet adsunt. </p>
  </div>
</div>

Теперь это становится еще проще и более гибким с помощью с использованием CSS Grid. Вы просто должны перекрывать размытую фона (IMGBG) с текстом (H2)

<div class="container">
 <div class="imgbg"></div>
 <h2>
  Lorem ipsum dolor sit amet consectetur, adipisicing elit. Facilis enim
  aut rerum mollitia quas voluptas delectus facere magni cum unde?:)
 </h2>
</div>
.

и CSS:

.container {
        display: grid;
        width: 30em;
      }

.imgbg {
        background: url(bg3.jpg) no-repeat center;
        background-size: cover;
        grid-column: 1/-1;
        grid-row: 1/-1;
        filter: blur(4px);
      }


     .container h2 {
        text-transform: uppercase;
        grid-column: 1/-1;
        grid-row: 1/-1;
        z-index: 2;
      }
.

Если вы хотите прокручивать контент, установите положение содержимого в Absolute:

content {
   position: absolute;
   ...
}
.

Я не знаю, было ли это только для меня, но если это не исправьте!

также с момента исправления фона, это означает, что у вас есть эффект "Parallax" !Так что теперь этот человек научил вас, как сделать размытый фон, но это также фоновый эффект параллакса!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top