我正在制作一个响应式网页,当前该网页有3个div,其中包含其他div。这些在屏幕上显示为3个浮动列
但是,当屏幕尺寸为700px及以下时,我希望此html更改为无序列表,而不是3个浮动列
我知道您可以更改CSS以进行响应,但是可以更改html吗? (或者是否有更好的方法来达到预期的效果?)
<section id="links">
<div id="links_1">
<div>
<h3>Header 1</h3>
<p>Text example 1</p>
</div>
<div>
<h3>Header 2</h3>
<p>Text example 2</p>
</div>
<div>
<h3>Header 3</h3>
<p>Text example 3</p>
</div>
<div>
<h3>Header 4</h3>
<p>Text example 4</p>
</div>
<div>
<h3>Header 5</h3>
<p>Text example 5</p>
</div>
<div>
<h3>Header 6</h3>
<p>Text example 6</p>
</div>
</div>
<div id="links_2">
<div>
<h3>Header 7</h3>
<p>Text example 7</p>
</div>
<div>
<h3>Header 8</h3>
<p>Text example 8</p>
</div>
<div>
<h3>Header 9</h3>
<p>Text example 9</p>
</div>
<div>
<h3>Header 10</h3>
<p>Text example 10</p>
</div>
<div>
<h3>Header 11</h3>
<p>Text example 11</p>
</div>
<div>
<h3>Header 12</h3>
<p>Text example 12</p>
</div>
</div>
<div id="links_3">
<div>
<h3>Header 13</h3>
<p>Text example 13</p>
</div>
<div>
<h3>Header 14</h3>
<p>Text example 14</p>
</div>
<div>
<h3>Header 15</h3>
<p>Text example 15</p>
</div>
<div>
<h3>Header 16</h3>
<p>Text example 16</p>
</div>
</div>
</section>
答案 0 :(得分:0)
通过jquery,您可以按以下方式处理窗口调整大小事件:
$( window ).resize(function() {
//
});
您可以获取元素并在函数中重新排序或更改它们,css不允许您更改html,但是如果您想通过CSS进行更改,请read this article关于CSS浮动
答案 1 :(得分:0)
您甚至可以通过添加样式礼节并使用百分比进行自适应调整,甚至使用html5进行自适应
<section id="links" style="width:50%;height:50%">
<div id="links_1">
<div>
<h3>Header 1</h3>
<p>Text example 1</p>
</div>
<div>
<h3>Header 2</h3>
<p>Text example 2</p>
</div>
<div>
<h3>Header 3</h3>
<p>Text example 3</p>
</div>
<div>
<h3>Header 4</h3>
<p>Text example 4</p>
</div>
<div>
<h3>Header 5</h3>
<p>Text example 5</p>
</div>
<div>
<h3>Header 6</h3>
<p>Text example 6</p>
</div>
</div>
<div id="links_2">
<div>
<h3>Header 7</h3>
<p>Text example 7</p>
</div>
<div>
<h3>Header 8</h3>
<p>Text example 8</p>
</div>
<div>
<h3>Header 9</h3>
<p>Text example 9</p>
</div>
<div>
<h3>Header 10</h3>
<p>Text example 10</p>
</div>
<div>
<h3>Header 11</h3>
<p>Text example 11</p>
</div>
<div>
<h3>Header 12</h3>
<p>Text example 12</p>
</div>
</div>
<div id="links_3">
<div>
<h3>Header 13</h3>
<p>Text example 13</p>
</div>
<div>
<h3>Header 14</h3>
<p>Text example 14</p>
</div>
<div>
<h3>Header 15</h3>
<p>Text example 15</p>
</div>
<div>
<h3>Header 16</h3>
<p>Text example 16</p>
</div>
</div>
</section>
答案 2 :(得分:0)
使用flexbox和媒体查询,您可以解决此问题。如果要更改HTML,您仍然需要CSS和/或JS来隐藏/显示特定的HTML部分。
#links {
width: 100%;
display: flex;
flex-direction: row;
flex-flow: wrap;
}
#links div {
flex-grow: 1;
flex-basis: calc(100% / 3);
width: calc(100% / 3);
height: 100%;
}
@media only screen and (max-width: 700px) {
#links div {
width: 100%;
flex-basis: 100%;
height: auto;
}
}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<section id="links">
<div id="links_1">
<div>
<h3>Header 1</h3>
<p>Text example 1</p>
</div>
<div>
<h3>Header 2</h3>
<p>Text example 2</p>
</div>
<div>
<h3>Header 3</h3>
<p>Text example 3</p>
</div>
<div>
<h3>Header 4</h3>
<p>Text example 4</p>
</div>
<div>
<h3>Header 5</h3>
<p>Text example 5</p>
</div>
<div>
<h3>Header 6</h3>
<p>Text example 6</p>
</div>
</div>
<div id="links_2">
<div>
<h3>Header 7</h3>
<p>Text example 7</p>
</div>
<div>
<h3>Header 8</h3>
<p>Text example 8</p>
</div>
<div>
<h3>Header 9</h3>
<p>Text example 9</p>
</div>
<div>
<h3>Header 10</h3>
<p>Text example 10</p>
</div>
<div>
<h3>Header 11</h3>
<p>Text example 11</p>
</div>
<div>
<h3>Header 12</h3>
<p>Text example 12</p>
</div>
</div>
<div id="links_3">
<div>
<h3>Header 13</h3>
<p>Text example 13</p>
</div>
<div>
<h3>Header 14</h3>
<p>Text example 14</p>
</div>
<div>
<h3>Header 15</h3>
<p>Text example 15</p>
</div>
<div>
<h3>Header 16</h3>
<p>Text example 16</p>
</div>
</div>
</section>
答案 3 :(得分:0)
我正在处理类似的情况,因此选择了flexbox路线。这是我想出的解决方案:
<ul>
<li>Item 1</li>
<li>Item 2</li>
...
<li>Item 15</li>
</ul>
@media (min-width: 701px) {
ul {
display: flex;
flex-flow: column wrap;
height: 9rem;
}
li {
width: calc(100% / 3);
}
}
现在,添加的内容包括边距和填充重置,框大小调整(如果需要)等。主要的“缺点”是您必须为列表指定高度-否则列表项将当父级<ul>
扩展以容纳其内容时,它将继续在单个列中运行。直到列表项在父项中用完时,它们才会开始包装到另一列中。
注意:这应在IE10 +和所有其他大约3年及更高版本的浏览器中使用。