- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Flexbox 构建的简单的类似 UI 的布局。它包含两个具有固定大小的栏和一个预览窗口,该窗口应该完全响应。
我在 Haml 中的预览窗口看起来像这样:
.preview
.page
但问题是......当我使用以下样式时:
.page {
width: 100vmin;
padding-bottom: 56.25vmin; //16:9 56.25
}
它不会填充视口(viewport)的其余部分。
如果我做这样的事情:
.page {
width: 100%;
padding-bottom: 56.25%; //16:9 56.25
}
它填充了整个可用空间,但对于某些视口(viewport)分辨率,.page
可能会超出 .preview
并覆盖我的栏的一些空间。无论如何, padding-bottom
宽高比解决方案可能不适合我,因为在未来,我需要从 .page
div 读取坐标,所以我假设它应该有真实的尺寸,而不是用填充物构建。这就是为什么我的问题是:“如何制作完全响应式的 div,它适应视口(viewport)大小的变化并保持其纵横比,而无需 padding-bottom
技巧(允许 jQuery)?”此外,当 .preview
div 的宽度大于高度时,.page
应该以高度作为标准以防止溢出(例如 YouTube 播放器)。
HTML:
<div class='editor'>
<div class='actions-bar'>
<a class='actions' href='#'>Каждый</a>
<a class='actions' href='#'>Охотник</a>
<a class='actions' href='#'>Желает</a>
<a class='actions' href='#'>Знать</a>
<a class='actions' href='#'>Где</a>
<a class='actions' href='#'>Сидит</a>
<a class='actions' href='#'>Фазан</a>
</div>
<div class='tool-bar'>
<div class='tools'>
<div class='tool'></div>
<div class='tool'></div>
<div class='tool'></div>
<div class='tool'></div>
<div class='tool'></div>
<div class='tool'></div>
</div>
</div>
<div class='preview'>
<div class='page'></div>
</div>
</div>
CSS:
.editor {
position: fixed;
height: 100%;
width: 100%;
display: flex;
flex-wrap: wrap;
user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.editor .actions-bar {
height: 50px;
min-width: 500px;
width: 100%;
background-color: #E3142C;
display: flex;
align-content: center;
align-items: center;
padding: 0;
}
.editor .actions-bar .actions {
width: 100px;
text-align: center;
height: 100%;
display: flex;
color: white;
text-decoration: none;
vertical-align: middle;
align-content: center;
align-items: center;
justify-content: center;
}
.editor .actions-bar .actions:hover {
background-color: #f04155;
}
.editor .tool-bar {
height: 95%;
top: 5%;
min-width: 175px;
width: 175px;
background-color: #F76475;
}
.editor .tool-bar .tools {
display: flex;
flex-wrap: wrap;
}
.editor .tool-bar .tools .tool {
height: 50px;
width: 50px;
margin-left: 25px;
margin-top: 25px;
background-color: red;
border: 2px solid #F7F7F7;
border-radius: 5px;
}
.editor .tool-bar .tools .tool:hover {
transform: scale(1.1);
}
.editor .tool-bar .tools .tool:active {
transform: scale(1.1);
border-color: #39b8f7;
}
.editor .preview {
height: 100%;
top: 50px;
width: auto;
left: 250px;
background-color: #d0d0d0;
display: flex;
flex: 1 1 auto;
justify-content: center;
align-items: center;
}
.editor .preview .page {
width: 100vmin;
padding-bottom: 56.25vmin;
background-color: white;
}
您可以在那里看到它是如何工作的:
http://codepen.io/dukeimg/pen/yYbgGq
我不是在等待现成的解决方案。如果至少有人能向我描述如何在 CSS 或 jQuery 上正确实现这一点,我将非常感激。
请不要因为我的 SCSS 而责怪我 - 这只是一个草稿,我知道 DRY,稍后我会重新编写此代码。
P.S.:请原谅我的英语 - 我是俄罗斯人:)
最佳答案
我自己的解决方案:
HTML:
<div class='editor'>
<div class='actions-bar'>
<a class='actions' href='#'>Каждый</a>
<a class='actions' href='#'>Охотник</a>
<a class='actions' href='#'>Желает</a>
<a class='actions' href='#'>Знать</a>
<a class='actions' href='#'>Где</a>
<a class='actions' href='#'>Сидит</a>
<a class='actions' href='#'></a>
</div>
<div class='main'>
<div class='tool-bar'>
<div class='tools'>
<div class='tool' id='label'></div>
<div class='tool' id='image'></div>
<div class='tool' id='video'></div>
<div class='tool' id='audio'></div>
<div class='tool' id='social'></div>
<div class='tool' id='note'></div>
</div>
</div>
<div class='preview'>
<div id='page'></div>
</div>
</div>
<div class='status-bar'></div>
</div>
CSS:
.body {
margin: 0;
padding: 0;
height: 100vh;
}
.editor {
display: flex;
flex-flow: column;
min-height: 100%;
user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-webkit-user-select: none;
}
.editor .main {
flex: 1 1 auto;
display: flex;
min-height: 100%;
}
.editor .main .tool-bar {
min-height: 100%;
min-width: 175px;
width: 175px;
background-color: #F76475;
}
.editor .main .tool-bar .tools {
display: flex;
flex-wrap: wrap;
}
.editor .main .tool-bar .tools .tool {
height: 50px;
width: 50px;
margin-left: 25px;
margin-top: 25px;
background-color: #f0f0f0;
border: 2px solid red;
border-radius: 5px;
}
.editor .main .tool-bar .tools .tool:hover {
transform: scale(1.1);
}
.editor .main .tool-bar .tools .tool:active {
transform: scale(1.1);
border-color: #39b8f7;
}
.editor .main .preview {
background-color: #d0d0d0;
display: flex;
flex: 1 1 auto;
justify-content: center;
align-items: center;
}
.editor .main .preview #page {
width: 80%;
background-color: white;
}
.editor .actions-bar {
flex: 0 1 auto;
height: 50px;
width: 100%;
background-color: #E3142C;
display: flex;
align-content: center;
align-items: center;
padding: 0;
}
.editor .actions-bar .actions {
width: 100px;
text-align: center;
height: 100%;
display: flex;
color: white;
text-decoration: none;
vertical-align: middle;
align-content: center;
align-items: center;
justify-content: center;
}
.editor .actions-bar .actions:hover {
background-color: #f04155;
}
.editor .status-bar {
background-color: #2E2F30;
flex: 0 1 40px;
}
jQuery:
function pageAdjust() {
$('#page').width('80%');
$('#page').height($('#page').width() * 0.5625);
if ($('.preview').height() <= $('#page').height()) {
$('#page').height($('.preview').height());
$('#page').width($('.preview').height() * 1.7778);
}
$(window).on('resize', function(){
pageAdjust();
});
$(document).ready(function() {
pageAdjust();
});
工作示例:
http://codepen.io/dukeimg/pen/yYzggO
--V.
关于jquery - 如何使 div 填充视口(viewport)的其余部分并保持纵横比(CSS 或 jQuery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32965693/
我在使用 io-ts 时遇到一些问题。我发现它确实缺乏文档,我取得的大部分进展都是通过 GitHub issues 取得的。不,我不明白 HKT,所以没有帮助。 基本上,我在其他地方创建一个类型,ty
我必须创建一个正则表达式来搜索整个文件,以找到与 Java XML 解析器的第一部分(但不是第二部分)的匹配项。这将用于防止某些 XXE 攻击。不幸的是,它确实必须是单个正则表达式,并且它确实需要搜索
我有一些简单的 Shared/_Header.cshtml 文件中的内容。 My Shared/_Layout.cshtml 通过调用插入该代码 @Html.Partial("_Header") 目前
我有一个 if-else 语句,其中: 条件 1:ID 匹配并且自动填充某些字段。然后 if 语句只填充其余字段 条件 2:ID 不匹配,所有字段均为空白。 ELSE 语句将它们全部填充 当我使条件
我正在开发一个单页滚动网站。我正在尝试实现 ScrollMagic 并固定第一部分,以便网站的其余部分滚动到固定部分的顶部。我尝试创建一个 jsfiddle 来显示问题,但我似乎无法让 jsfiddl
这是我的情况: 我想使用 Google AdWords 的转换脚本,但出于某种原因,他们代码段的 javascript 部分在我的页面上添加了一些我似乎无法摆脱的不需要的空白。 所以我正在查看的选项纯
寻找一种优雅的方式在页面上添加一次脚本,就是这样。 我有一个需要 2 个 CSS 文件和 2 个 JS 文件的部分 View 。在大多数地方,只需要其中 1 个部分 View 。但在单个页面上,我需要
我想要一个网站,该网站始终具有相同的部分,具有相同的 id 以及我想要显示的所有内容。我对 javascript 不太了解,我想知道如何删除除特定部分之外的所有内容。 最好的方法是否是只执行一个循环来
SQL 语句教程 (11) Group By 我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (store_name)
我试图理解部分并认为我已经明白了。基本上,这是一种将部分应用程序应用于二元运算符的方法。所以我了解所有(2*) , (+1)等例子就好了。 但是在 O'Reilly Real World Haskel
有没有办法禁止在部分中覆盖给定的关键字参数?假设我要创建函数 bar总是有 a设置为 1 .在以下代码中: from functools import partial def foo(a, b):
我有这个使用节的 OpenMP 代码 #pragma omp parallel sections num_threads(8) { printf_s("Allo fro
我正在尝试重新创建 Apple 制作的有缺陷的 CNContactPickerViewController,因此我有一个数据数组 [CNContact],我需要将其整齐地显示在 UITableView
我有一个相对布局,其中包含一些 float 在 GridView 上的 TextView 。当我在网格中选择一个项目时,布局向下移动到屏幕的尽头,只有大约 1/5 的部分是可见的。这是使用简单的翻译动
我想在我的 tableView 中有两个部分。我希望将项目添加到第 0 节,然后能够选择一行以将其从第 0 节移动到第 1 节。到目前为止,我已将这些项目添加到第 0 节,但是当它关闭时数据不会加
我正在以自由职业者的身份开发支付控制软件,但我有一些关于 mysql 的问题。 。我有一个用作日志的表,名为“Bitacora”。在表中,我有一个名为 idCliente 的列,它是自己表中一个人的
我有一个 PFQueryTableViewController,我想向 tableview 添加部分,我这样尝试: - (PFQuery *)queryForTable { PFQuery *qu
我正在尝试编写一个查询,将部分匹配项与存储的名称值进行匹配。 我的数据库如下所示 Blockquote FirstName | Middle Name | Surname --------------
我正在开发一个语音备忘录应用程序,并且正在将文件保存到表格 View 中。我希望默认文件名显示为“新文件 1”,如果使用“新文件 1”,则它会显示为“新文件 2”,依此类推。 我正在尝试使用 do-w
我有以下简单的 HTML 布局 .section1 { background: red; } .section2 { background: green; } .section3 { ba
我是一名优秀的程序员,十分优秀!