提问人:MiguelP 提问时间:7/21/2023 最后编辑:MiguelP 更新时间:7/24/2023 访问量:24
有没有办法将对象位置应用于 div(不使用 <img>)?
Is there any way to apply object-position to a div (without using <img>)?
问:
我正在尝试在 jenkyll 模板上调整图像,以尽量减少错误。
因为默认的html同时用于图像和视频(我认为?),所以它没有使用适当的标签来实现。我正在编辑的部分是标题图像叠加,因为我希望图像的特定部分在移动设备上可见。<div>
div
object-position
原始代码:
{% capture overlay_img_path %}{{ page.header.overlay_image | relative_url }}{% endcapture %}
{% if page.header.overlay_filter contains "gradient" %}
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
{% elsif page.header.overlay_filter contains "rgba" %}
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
{% elsif page.header.overlay_filter %}
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
{% capture overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}){% endcapture %}
{% endif %}
{% if page.header.image_description %}
{% assign image_description = page.header.image_description %}
{% else %}
{% assign image_description = page.title %}
{% endif %}
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}"
>
{% if page.header.overlay_color or page.header.overlay_image %}
<div class="wrapper">
<h1 id="page-title" class="page__title" itemprop="headline">
{% if paginator and site.paginate_show_page_num %}
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
{% else %}
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
{% endif %}
</h1>
{% if page.tagline %}
<p class="page__lead">{{ page.tagline | markdownify | remove: "<p>" | remove: "</p>" }}</p>
{% elsif page.header.show_overlay_excerpt != false and page.excerpt %}
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
{% endif %}
{% include page__meta.html %}
{% if page.header.cta_url %}
<p><a href="{{ page.header.cta_url | relative_url }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
{% endif %}
{% if page.header.actions %}
<p>
{% for action in page.header.actions %}
<a href="{{ action.url | relative_url }}" class="btn btn--light-outline btn--large">{{ action.label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a>
{% endfor %}
{% endif %}
</div>
{% else %}
<img src="{{ page.header.image | relative_url }}" alt="{{ image_description }}" class="page__hero-image">
{% endif %}
{% if page.header.caption %}
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
{% endif %}
</div>
我的编辑:
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}" {% if page.header.overlay_position %}data-object-position="{{ page.header.overlay_position }}"{% endif %}
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}{% if page.header.overlay_position %}object-position: {{ page.header.overlay_position }};{% endif %}"
>
有没有办法做到这一点,或者我必须重写html模板?
答:
1赞
Amaury Hanser
7/24/2023
#1
你不能使用 .object-position
object-position
object-position CSS 属性指定所选替换元素的内容在元素框中的对齐方式。
替换的元素通常为 、 、 、 。<iframe>
<video>
<embed>
但你不需要.正如您在代码中看到的那样,该图像来自 :object-position
background-image
div
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}{{ overlay_filter }}, {% endif %}url('{{ overlay_img_path }}');{% endif %}"
>
css 中的 A 有很多属性:background
background-attachment
background-clip
background-color
background-image
background-origin
background-position
background-repeat
background-size
您可能需要两个属性:
background-position
background-size
background-position
background-position CSS 属性设置每个背景图像的初始位置。该位置相对于 background-origin 设置的位置图层。
这意味着您可以使用媒体查询来调整图像的位置。
评论
[<>]