Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 图像上的模糊部分、实体边缘、响应图像_Html_Css_Css Filters - Fatal编程技术网

Html 图像上的模糊部分、实体边缘、响应图像

Html 图像上的模糊部分、实体边缘、响应图像,html,css,css-filters,Html,Css,Css Filters,我试图用纯HTML/CSS复制以下模糊效果。我当前的appraoch使用了两幅图像,原始的封面图像,然后,使用CSS过滤器:blur(5px)的图像模糊bg图像的第二份副本 预期效果: 我找不到任何方法来保持工具栏底部的高度,同时保留一个背景图像等于整个封面图像的尺寸 当父元素不是位置:相对时,溢出:隐藏对子元素不起作用。但是,如果父图像是相对的,则内部模糊的bg图像与封面图像的尺寸不同 以下是基本设置: <div class="cover-image"> <di

我试图用纯HTML/CSS复制以下模糊效果。我当前的appraoch使用了两幅图像,原始的封面图像,然后,使用CSS
过滤器:blur(5px)的图像模糊bg图像的第二份副本

预期效果:


我找不到任何方法来保持工具栏底部的高度,同时保留一个
背景图像
等于整个封面图像的尺寸

当父元素不是
位置:相对时,
溢出:隐藏
对子元素不起作用。但是,如果父图像是相对的,则内部模糊的bg图像封面图像的尺寸不同

以下是基本设置:

<div class="cover-image">
    <div class="toolbar">
        <div class="blurred-bg-image"></div>
    </div>
</div>


到目前为止,我能找到的唯一解决方案是在模糊的bg图像上使用
clip rect()
,然后计算将其剪辑到哪里。但是,这是没有响应的,并将JS包含在混合中。

我使用位于工具栏顶部的
::before将背景图像添加到工具栏中。图像区域和伪元素高度应使用基于根的单位,如
vh
rem
,因此,无论容器大小如何,它们的大小都相同。此外,伪元素背景设置与主背景设置相同。伪元素模糊,并使用工具栏的
溢出:隐藏
删除多余的背景

在此对话框中调整“结果”面板的大小

html,正文{
保证金:0;
填充:0;
}
.头像{
位置:相对位置;
最小高度:100px;
}
.top图像,.toolbar::之前{
高度:50vh;/**图像和模糊区域高度**/
背景:url('http://www.theplanningboardroom.net/wp-content/uploads/2011/06/sydney-city-buildings.jpg")不重复;;
背景尺寸:封面;
}
/**.toolbar::before位于工具栏底部,因此多余的高度会上升**/
.toolbar、.toolbar::之前{
位置:绝对位置;
右:0;
底部:0;
左:0;
}
.工具栏{
z指数:1;
/**高度也可以是百分比,例如20%**/
高度:100px;
/**隐藏背景的其余部分::before**/
溢出:隐藏;
/**文本和控件的一些样式**/
框大小:边框框;
填充:10px;
文本对齐:居中;
}
.工具栏::之前{
z指数:-1;
显示:块;
/**高度为全屏高度**/
-webkit过滤器:模糊(5px);
过滤器:模糊(5px);
内容:'';
}

文本和控件
内容

显示最终结果

方法

你可以使用这个方法

此方法利用了以下内容:

  • 绝对定位
  • 转变
  • 一幅图像用于背景和模糊效果
您必须调整媒体查询,但这并不困难。我看到的唯一主要缺点是必须在工具栏内容上设置固定高度,因为该高度用于变换。不过,媒体查询也很容易做到这一点

有关源代码和演示,请参见以下代码段。我在CSS中添加了一些注释

html,
身体{
宽度:100%;
身高:100%;
}
.封面图片{
位置:相对位置;
最大宽度:1860px;
宽度:100%;
最大高度:560像素;
身高:100%;
溢出:隐藏;
背景色:#005FE5;
}
.工具栏{
位置:绝对;/*将.toolbar放在.cover图像的底部*/
底部:0;
左:0;
z指数:1;
宽度:100%;
身高:100%;
溢出:隐藏;/*防止psedou元素爆发*/
-webkit转换:translateY(100%)translateY(-10rem);/*一直向下翻译,然后按.toolbar内容的高度备份*/
-moz变换:translateY(100%)translateY(-10rem);
-ms变换:translateY(100%)translateY(-10rem);
-o变换:translateY(100%)translateY(-10rem);
转换:translateY(100%)translateY(-10rem);
}
/*两个元素的背景相同,但稍后我们将模糊伪元素*/
.封面图片,
.工具栏::之前{
背景图像:url(“https://dl.dropboxusercontent.com/s/3vzuc6vmfito1zg/austin-cityscape-night-hdr-1.jpg?dl=0");
背景重复:无重复;
背景位置:中底;
背景大小:封面;/*相应缩放背景*/
}
/*将此伪元素用于模糊效果*/
.工具栏::之前{
内容:“;
位置:绝对位置;
底部:0;
左:0;
z指数:-1;
宽度:100%;
身高:100%;
-webkit转换:translateY(-100%)translateY(10rem);/*与我们翻译的内容反向翻译。工具栏*/
-moz变换:translateY(-100%)translateY(10rem);
-ms变换:translateY(-100%)translateY(10rem);
-o-变换:translateY(-100%)translateY(10rem);
转换:translateY(-100%)translateY(10rem);
-webkit过滤器:模糊(10px);/*最后!模糊效果*/
过滤器:模糊(10px);
}
.工具栏内容{
位置:相对位置;
高度:10rem;/*在变换中使用此值*/
颜色:#FFF;
}
.工具栏内容{
位置:绝对位置;
最高:50%;
左:5%;
保证金:0;
填充:0;
-webkit转换:translateY(-50%);
-莫兹变换:translateY(-50%);
-ms转换:translateY(-50%);
-o-变换:translateY(-50%);
转化:translateY(-50%);
列表样式:无;
}
.工具栏标题{
颜色:#A6BFC9;
文本转换:大写;
}
.编辑个人资料{
位置:绝对位置;
最高:50%;
右:5%;
-webkit转换:translateY(-50%);
-莫兹变换:translateY(-50%);
-ms转换:translateY(-5)
<html><head><link rel="stylesheet" type="text/css" href="glass.css"/></head>
<body>
    <div id="bkgrd">
        <div class="blur-bkgrd-position cropper flip ">
            <div class="blur-bkgrd-position glass flip">

            </div>
        </div>
    </div>
</body>
#bkgrd{
    position:absolute;          /*align very top left */
    top:0;                      /*align very top left */
    left:0;                     /*align very top left */
    width: 100%;                /* full screen for background cover/contain */
    padding-top: 56.25%;        /* helps "bkgrd-size contain" stretch to full width by breaking height limit */
    /*image*/
    background-image: url(yourbackground.jpg);
    background-size: contain;  /*responsive width-wise, no js */
    background-repeat: no-repeat;
    overflow: hidden;
}
.blur-bkgrd-position {
    position:absolute;          
    top:50%;                                                   /*sets up cut off point*/
    left:0;                     /*align very left */
    width: 100%;                /* full screen for background cover/contain */
    padding-top: 56.25%;        /* helps "bkgrd-size contain" stretch to full width by breaking height limit */
}
.glass {
    /*blurred image*/
    background: 
        /* dark blue */ 
        linear-gradient(
          rgba(0, 0, 30, 0.45), 
          rgba(0, 0, 30, 0.45)
        ),
        url(yourbackground.jpg);
    background-size: contain;   /*responsive width-wise, no js */
    background-repeat: no-repeat;
    background-position: center bottom.
    -webkit-filter: blur(5px);
    -moz-filter: blur(5px);
    -o-filter: blur(5px);
    -ms-filter: blur(5px);
    filter: blur(5px);
}
.cropper {
   overflow: hidden;           /* performs the cropping */
}
/* apply to both .cropper and .glass */  /* enables crop from the top */
.flip {
  -webkit-transform: rotate(180deg);
  -moz-transform:    rotate(180deg);
  -ms-transform:     rotate(180deg);
  -o-transform:      rotate(180deg);
  transform:         rotate(180deg);
}
.toolbar{
  -webkit-backdrop-filter: blur(5px);
  backdrop-filter: blur(5px);
}