Lazy load style="background-image inside a span 标签
Lazy load style="background-image inside a span tag
我已经为我的大部分网站实现了延迟加载图像(使用这个 https://github.com/tuupola/lazyload),但是我有一个商店页面,其中包含大量使用背景图像标签的缩略图,代码我有如下(在 smarty 模板系统上是 运行):-
{section name=c loop=$cats->mCats}
<div class="block"><a class="clearfix" href="{$smarty.const.SITE_ROOT}/{$cats->mCats[c].menulinktext}/"><span class="thumb" style="background-image: url({$smarty.const.SITE_ROOT}{$smarty.const.IMG_DIR}/thumbnails/{$cats->mCats[c].img_category});"></span><span class="info">{$cats->mCats[c].name|escape:'htmlall'|widont}</span></a></div>{/section}
CSS :-
.blocks1 .block a span.thumb {
width: 120px;
height: 90px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
margin: 0 auto
}
我能找到的所有示例都依赖于 div 内的背景图像部分,但我的是在 span 标签内。
有没有办法让它工作?
在线阅读建议 span 用于设置文本样式,但编写此内容的原始开发人员似乎将其用于图像?
感谢您对此提供的任何帮助,我想我已经尝试了几乎所有方法来让它工作!!
你试过用 <Div>
做吗?
W3School 建议“<span>
标签是一个内联容器,用于标记文本的一部分或文档的一部分。”
对于 Div:“<div>
标记定义了 HTML 文档中的一个分区或部分。”
我觉得应该不会有太大的区别,只要不影响你其他人的风格就行?
<span>
标签根据定义是一个 inline 元素,用于格式化文本。但是,您可以将其转换为 block 元素,因此它的行为与 div.
完全相同
尝试将此添加到您的 CSS 规则中:
.blocks1 .block a span.thumb {
display: block;
}
概念解释在这里:https://www.w3schools.com/html/html_blocks.asp
如果您的项目需要并排显示,并且您不希望它们在每个项目之后换行,请尝试 display: inline-block;
。
我使用了不同的插件 (http://jquery.eisbehr.de/lazy/#about)
我将此添加到 CSS :-
div.lazy {
width: 120px;
height: 90px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
margin: 0 auto;
display: block;
}
将 tpl 代码更改为:-
{section name=c loop=$cats->mCats}
<div class="block"><a class="clearfix" href="{$smarty.const.SITE_ROOT}/{$cats->mCats[c].menulinktext}/"><div class="lazy" data-src="{$smarty.const.SITE_ROOT}{$smarty.const.IMG_DIR}/thumbnails/{$cats->mCats[c].img_category}" /></div><span class="info">{$cats->mCats[c].name|escape:'htmlall'|widont}</span></a></div>{/section}
我现在可以完全延迟加载图片了:)
我已经为我的大部分网站实现了延迟加载图像(使用这个 https://github.com/tuupola/lazyload),但是我有一个商店页面,其中包含大量使用背景图像标签的缩略图,代码我有如下(在 smarty 模板系统上是 运行):-
{section name=c loop=$cats->mCats}
<div class="block"><a class="clearfix" href="{$smarty.const.SITE_ROOT}/{$cats->mCats[c].menulinktext}/"><span class="thumb" style="background-image: url({$smarty.const.SITE_ROOT}{$smarty.const.IMG_DIR}/thumbnails/{$cats->mCats[c].img_category});"></span><span class="info">{$cats->mCats[c].name|escape:'htmlall'|widont}</span></a></div>{/section}
CSS :-
.blocks1 .block a span.thumb {
width: 120px;
height: 90px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
margin: 0 auto
}
我能找到的所有示例都依赖于 div 内的背景图像部分,但我的是在 span 标签内。
有没有办法让它工作?
在线阅读建议 span 用于设置文本样式,但编写此内容的原始开发人员似乎将其用于图像?
感谢您对此提供的任何帮助,我想我已经尝试了几乎所有方法来让它工作!!
你试过用 <Div>
做吗?
W3School 建议“<span>
标签是一个内联容器,用于标记文本的一部分或文档的一部分。”
对于 Div:“<div>
标记定义了 HTML 文档中的一个分区或部分。”
我觉得应该不会有太大的区别,只要不影响你其他人的风格就行?
<span>
标签根据定义是一个 inline 元素,用于格式化文本。但是,您可以将其转换为 block 元素,因此它的行为与 div.
尝试将此添加到您的 CSS 规则中:
.blocks1 .block a span.thumb {
display: block;
}
概念解释在这里:https://www.w3schools.com/html/html_blocks.asp
如果您的项目需要并排显示,并且您不希望它们在每个项目之后换行,请尝试 display: inline-block;
。
我使用了不同的插件 (http://jquery.eisbehr.de/lazy/#about)
我将此添加到 CSS :-
div.lazy {
width: 120px;
height: 90px;
background-repeat: no-repeat;
background-position: center;
background-size: contain;
margin: 0 auto;
display: block;
}
将 tpl 代码更改为:-
{section name=c loop=$cats->mCats}
<div class="block"><a class="clearfix" href="{$smarty.const.SITE_ROOT}/{$cats->mCats[c].menulinktext}/"><div class="lazy" data-src="{$smarty.const.SITE_ROOT}{$smarty.const.IMG_DIR}/thumbnails/{$cats->mCats[c].img_category}" /></div><span class="info">{$cats->mCats[c].name|escape:'htmlall'|widont}</span></a></div>{/section}
我现在可以完全延迟加载图片了:)