CSS 可调整大小的带标题的图像

2024-04-26

我正在尝试获取并排显示的两个图像的 HTML 布局,并填充页面,同时保持其纵横比并保持图像彼此相邻(即不在页面每一半的中心) )。我还想要顶部有一个标题。我几乎已经使用下面的 CSS hackery 实现了这一目标。目前它看起来像这样:

如果我水平缩小它,图像会按预期缩小(请注意,SO 已将图像调整为宽度,但“选择图像。”文本大小实际上是恒定的)。

问题是我的图像填满了整个页面,因为我使用的是 CSSvw and vh单位(视图宽度和视图高度)。它们允许您将宽度或高度设置为整个视图的百分比,但不是封闭的 div 的百分比,因此我不能只是将其放在 div 中(iframe会起作用,但是呃)。因为我的标题是绝对定位的,所以当我垂直缩小窗口时,它看起来像这样:

我的代码如下。有谁知道如何在不诉诸 javascript 调整大小的情况下解决这个问题?

*
{
    margin: 0;
    padding: 0;
	/* Fix CSS. */
	box-sizing: border-box;
}

body
{
	margin: 20px;
}

html
{
	background-color: #f4f4f6;
}

.halfContainer
{
    width: 50vw;
    height: 100vh;
    margin: auto;
    padding: 0;
    top: 0;
    bottom: 0;
    position: absolute;
}

#leftContainer
{
    left: 0;
}

#rightContainer
{
    right: 0;
}

/* AR is height/width. */

#leftImage
{
    /* Set to half width, minus padding. 50-padding = 45 */
    width: 45vw; 
	/* Multiply by aspect ratio. 45 * AR = ... */
    /*height: 35vw;*/
    /* Clip by height if necessary, minus padding. 100-padding*2 = 90 */
    max-height: 90vh;
	/* Divide by aspect ratio. 90 / AR = ... */
    /*max-width: 140vh; */
    margin: auto;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 5%; /* Padding */
}


#rightImage
{
    /* Set to half width, minus padding. 50-padding = 45 */
    width: 45vw; 
	/* Multiply by aspect ratio. 45 * AR = ... */
    /*height: 35vw;*/
    /* Clip by height if necessary, minus padding. 100-padding*2 = 90 */
    max-height: 90vh;
	/* Divide by aspect ratio. 90 / AR = ... */
    /*max-width: 140vh;*/
    margin: auto;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 5%;
}

#instructions
{
	margin: auto;
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<title></title>
</head>
<body>
<center><h1 id="instructions">Choose an image.</h1></center>

<div id="leftContainer" class="halfContainer">
	<img id="leftImage" src="http://www.washingtonpost.com/news/morning-mix/wp-content/uploads/sites/21/2014/09/Grumpy_Cat_Endorsement-017d7-ULFU.jpg"
			style="height: 33.70vw; max-width: 120.15vh;"/>
</div>
<div id="rightContainer" class="halfContainer">
	<img id="rightImage" src="http://upload.wikimedia.org/wikipedia/commons/2/22/Turkish_Van_Cat.jpg"
			style="height: 49.41vw; max-width: 81.95vh;"/>
</div>

</body>
</html>

首先,您可以设置max-width: 100%; and height: auto;在图像标签上,而不是对每个图像的高度和最大宽度进行硬编码。

然后你可以设置top: 40px; on the .halfContainerdiv 使容器开始向下 40 像素。

最后,设置max-height图像的calc(100vh - 40px);这样它们将始终是页眉和页面底部之间的高度。top: 0; and bottom: 0;然后将确保图像与容器的顶部和底部正确对齐。

* {
  margin: 0;
  padding: 0;
  /* Fix CSS. */
  box-sizing: border-box;
}
body {
  margin: 20px;
}
html {
  background-color: #f4f4f6;
}
.halfContainer {
  width: 50vw;
  margin: auto;
  padding: 0;
  top: 40px;
  bottom: 0;
  position: absolute;
}
#leftContainer {
  left: 0;
}
#rightContainer {
  right: 0;
}
img {
  max-width: 100%;
  height: auto;
}
#leftImage {
  max-height: calc(100vh - 40px);
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  right: 5%;
  /* Padding */
}
#rightImage {
  max-height: calc(100vh - 40px);
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 5%;
}
#instructions {
  margin: auto;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}
<center>
  <h1 id="instructions">Choose an image.</h1>
</center>
<div id="leftContainer" class="halfContainer">
  <img id="leftImage" src="http://www.washingtonpost.com/news/morning-mix/wp-content/uploads/sites/21/2014/09/Grumpy_Cat_Endorsement-017d7-ULFU.jpg" />
</div>
<div id="rightContainer" class="halfContainer">
  <img id="rightImage" src="http://upload.wikimedia.org/wikipedia/commons/2/22/Turkish_Van_Cat.jpg" />
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS 可调整大小的带标题的图像 的相关文章

  • 垂直居中弹出框 div

    我正在尝试制作一个类似 iPad 的弹出框 div 作为练习 但我不知道如何使弹出框 div 垂直居中 因为内容宽度 高度未指定 http jsfiddle net mbYyR 5 http jsfiddle net mbYyR 5 我希望
  • 如何使用手写笔在 HTML5 画布上绘图

    我使用 onmousedown onmousemove 和 onmouseup 事件在 HTML5 画布对象上使用 JavaScript 进行绘制 一切正常 现在我想用手写笔替换鼠标 Wacom Intuos Pro 因此我用 onpoin
  • 将 HTML 表格转换为 R 数据框

    table cellspacing 1 cellpadding 7 border 1 thead tr td align left valign middle nbsp td td align left 1a My peers make a
  • Firefox 和 IE 在 元素上添加了内边距/边距。和clearfix的奇怪之处

    在很长一段时间里 我在 Firefox 和 IE 中遇到了一些垂直间距问题 我正在使用一个 我的 css 中的选择器将边距应用于某个容器元素内的所有内容 在 Chrome 中工作正常 但是在 FF 和 IE 中 我似乎不知从何而来得到了神秘
  • 用户在 Rails 中选择 CSS 样式表

    我正在 Rails 中开发一个网站 我希望用户能够将 CSS 样式表更改为浅色或深色主题 我认为这样我就可以为样式表使用变量 我尝试通过在我的视图中添加一个链接来更改该变量 如下所示 在我的控制器中调用此函数 class ProjectsC
  • 如何让div垂直展开以将内容包裹在其中?

    我有一个 div 其中包含许多动态生成的图像 我不知道图像列表有多高 我的问题是包含动态生成的图像的 div 的行为不像它容纳任何内容 我希望它扩展到图像列表的高度 每个图像本身都包含在一个 div 中 这是包装 div block pad
  • 您可以强制 HTML 表单对相对 URL 使用 HTTPS 吗?

    我有一个网站 其中每个页面都通过 HTTPS 提供服务 在其中一个页面上 我有一个表单 其操作属性设置为相对 URL 包含表单的页面只能通过 HTTPS 访问 表单发布到的页面只能通过 HTTPS 访问 但在 IE 中 我收到一条安全警告
  • 广告过滤服务器端[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个 Web 应用程序 在其中显示来自其他网站的 HTML 在显示最终版本之前 我想去掉广告 关于如何实现这一目标有什么想法
  • 发布后忽略基本标签

    在 Chrome 上我收到错误Refused to execute a JavaScript script Source code of script found within request 在发布包含域名的数据后 另请注意任一页面上都缺
  • 如何为 Safari 浏览器设置媒体查询

    media only screen and min width 480px and max width 767px 这是我的媒体查询如何修复它 如何设置 safari 网络浏览器 媒体查询不是为了浏览器检测而进行的 使用 javascrip
  • WordPress 3.3 CSS 中的相对路径

    我想添加一个图像作为标题的背景 问题是我不想添加绝对路径 因为我是在我的电脑上执行此操作 并且它们要上传到我的服务器 应该在CSS中工作 它在这里不起作用 code branding background url images backgr
  • 如何将自定义 CSS 添加到脆皮表单?

    我正在尝试在脆皮表单的帮助下为我的网站创建一个响应式表单 我没有使用引导程序 我想将自定义 CSS 添加到脆皮表单以匹配我的整个网站 HTML
  • 带有占位符文本的文本框,该文本会逐字符消失

    我正在寻找一种方法来构造带有日期字段占位符文本的文本框 占位符文本将为 xx xx xxxx 并在用户键入时逐个字符消失 留下斜杠 我遇到了以下两个问题 它们似乎解决了使文本立即消失的问题 HTML CSS 制作一个文本框 其中的文本显示为
  • 如何使用 rel=preload 预加载材质图标?

    我正在尝试使用谷歌灯塔优化我的网页 该报告指出 在导入 Material Design 图标的链接上使用 rel preloads 我尝试使用语法预加载它们 我也尝试过使用字体进行预加载 类型为 woff woff2 和 ttf 它们似乎都
  • 如何在点击事件上调用 Angular 组件 [Angular]

    我不是 Angular 方面的专家 我也遵循了互联网上的一些答案 特别this https stackoverflow com questions 17636528 how do i load an html page in a div u
  • Rails:CSS 在开发和生产中似乎有所不同

    我有一个标准的 Rails 4 heroku 设置 有一点很奇怪 页面的不同元素在本地环境和生产环境中以不同的尺寸显示 例如 虽然 header height 设置为特定的像素值 但两个环境的高度不同 与内容的宽度相同 我将最大宽度设置为
  • IE9 上的 box-shadow 无法使用正确的 CSS 进行渲染,但适用于 Firefox、Chrome

    我正在尝试模拟浮动模态框类型 但 IE9 及其框阴影实现存在问题 这是我正在使用的代码的摘要 它可以重复该问题
  • 如何获取表单的onSubmit事件?

    我想知道如何抢onsubmit表单中的事件来进行一些表单验证 因为我无权直接访问它 我正在编写一个用于评论的 WordPress 插件 因此无法直接访问表单标签或提交按钮 我在尝试为我的插件执行此操作时感到非常沮丧 因此我在下面编写了一个
  • JavaScript - 离焦事件?

    我想要做的是显示带有文本颜色的输入字段black 然后 当该人在输入字段内单击时 onfocus 我想将文本颜色更改为red 然后 当该人单击输入字段外部 不再焦点 时 我想将文本颜色更改回black 我知道如何处理 JavaScripto
  • 将 CSS 类应用于 asp:Hyperlink 中的图像?

    我使用 asp Hyperlink 根据 URL 中的参数动态呈现链接图像 我需要能够将 CSS 类添加到渲染的 img 中 但不知道如何做到这一点 我知道我可以将 CssClass blah 添加到asp Hyperlink 但在渲染的H

随机推荐

  • 使用 apache poi 读取 .xlsx 文件在 Linux 机器上给出 org.apache.poi.POIXMLException

    我有一个应用程序读取 xlsx 文件并向用户显示内容 该应用程序在 Windows 环境下运行良好 我在 ubuntu 服务器上的 tomcat6 上部署了此 Web 应用程序的 war 文件 我还将 xlsx 文件复制到服务器上 代码中的
  • 这是什么错误:位于 com.google.common.base.Preconditions.checkNotNull

    我是一名新的自动化测试人员 正在处理示例测试脚本 需要你们的一些帮助 我尝试过使用 POM 和基本的 TestNG 我创建了 2 个包 页面和测试用例 当我尝试从我的页面包访问 ClickJoin Enterusername 方法时 出现一
  • 如何将对象转换为 Action

    我创建了一个简单的消息总线 用于排队和发出 发布事件 我正在使用 StructureMap 来定位注册的处理程序 Action
  • 在 n log n 时间内打乱链表的算法

    我正在尝试使用分治算法对链表进行洗牌 该算法以线性 n log n 时间和对数 log n 额外空间随机洗牌链表 我知道我可以进行类似于在简单的值数组中使用的 Knuth 洗牌 但我不确定如何通过分而治之来做到这一点 我的意思是 我实际上在
  • 将现有 MongoDB 字符串属性转换为 BSON::ObjectId

    我在 MongoDB 中有一个文档集合 其中有一个属性被存储为字符串 如果将其保存为 BSON ObjectId 会更好 集合名称是foo该字段称为bar 拥有每个领域的最佳方式是什么bar将其现有值转换为 BSON ObjectId 的实
  • stopPropagation/prevent链接内元素的默认行为

    我试图理解当 a 中的元素出现时的行为 a have a event stopPropagation or event preventDefault 在第一种情况下 单击 div 还触发了 a 事件 将其移动到另一个页面 event sto
  • 如何在 FORMSOF Inflectional 全文搜索中获取匹配项的位置?

    我使用 CONTAINSTABLE 查询与 MS SQL Server 的全文索引引擎在文本列中进行搜索 例如 SELECT FROM MyTable INNER MERGE JOIN CONTAINSTABLE MyTable sDesc
  • 合并 ResourceDictionary 与 App.xaml

    我正在阅读有关 ResourceDictionary 的内容 并且遇到了一个令人困惑的问题 看来每个 XAML 只能有 1 个 ResourceDictionary 因此 如果我想使用多个资源字典 我可以合并资源字典 如果我可以合并字典 那
  • 从 JavaScript 中同步导入 JavaScript 文件?

    我不想弄乱我的 HTML 文件 而是想通过另一个 JavaScript 文件导入外部 JavaScript 文件 就像 import in css 在几个网站上 包括 StackOverflow 本身 我注意到向 DOM 附加脚本标签可以解
  • 缩放电缆表以适合页面宽度

    如何使用 kable 函数格式化 pdf 中的表格 因为我的输出表格宽度超过了pdf的宽度 这是一个例子 output pdf document r df lt cbind mtcars 1 5 mtcars 1 5 knitr kable
  • AJAX + SEO 快速问题

    当用户希望在页面加载之间发生效果 即旧内容淡出然后新内容返回 时 我通常按如下方式构建网站 index php about php 等
  • 如何从 kubernetes 集群内部访问主机的 localhost

    在此应用程序中 nodejs pod 在 kubernetes 内部运行 而 mongodb 本身作为 localhost 位于主机外部 这确实不是一个好的设计 但它只适用于开发环境 在生产中 将有一个单独的 mongodb 服务器 因为这
  • jQuery 中两个数组的合并、存储唯一元素和排序

    var Arr1 1 3 4 5 6 var Arr2 4 5 6 8 9 10 我正在尝试合并这两个数组 输出是 1 3 4 5 6 4 5 6 我用过 merge Arr1 Arr2 这一块将它们合并 使用警报我可以看到像上面这样的合并
  • 搜索拥有超过十亿条记录的数据库的最有效方法?

    我的客户有一个巨大的数据库 仅包含三个字段 主键 无符号数 姓名 多字文本 描述 最多 1000 个 varchar 该数据库拥有超过数十亿条条目 我以前没有处理如此大量数据的经验 他希望我设计一个使用 AJAX 如 Google 的界面来
  • 具有自托管代理的 Azure DevOps Pipeline for Java 项目

    我们有一组使用不同 JDK 版本开发的 Java 项目 项目中使用了不同版本的 Gradle 和 Maven 我们应该使用以下命令创建 Azure DevOps PipelineSelf Hosted Agent截至目前 构建代理服务器已随
  • Visual Studio 2015 - C# Windows 通用应用程序缺少程序集引用

    今天 我将我的 Windows 通用应用程序项目从 github 克隆到运行新安装的 Visual Studio 2015 的新计算机上 项目加载后 我注意到我的所有页面和属性都带有红色下划线 并且有许多错误 CS0246 C The ty
  • Microsoft 的 STL::list::sort() 使用哪种排序算法?

    注 我不小心发帖了这个问题 https stackoverflow com questions 1717773 which sorting algorithm is used by stls listsort没有指定我正在使用哪个STL实现
  • John Resig 的 Javascript 继承片段是否已弃用?

    我正在寻找一种简单的方法来创建两个类 一个类继承另一个类 子类重新定义父类的方法之一 并在新方法中调用父类的方法 例如 有一个班级Animal and Dog 其中 Animal 类定义了一个方法makeSound 它建立了如何输出声音 然
  • 如何处理Kafka流中的不同时区?

    因此 我正在评估 Kafka Streams 及其功能 看看它是否适合我的用例 因为我需要每 15 分钟 每小时 每天聚合传感器数据 并发现它由于其窗口功能而很有用 因为我可以通过应用创建窗口windowedBy on KGroupedSt
  • CSS 可调整大小的带标题的图像

    我正在尝试获取并排显示的两个图像的 HTML 布局 并填充页面 同时保持其纵横比并保持图像彼此相邻 即不在页面每一半的中心 我还想要顶部有一个标题 我几乎已经使用下面的 CSS hackery 实现了这一目标 目前它看起来像这样 如果我水平