CSS Visual Studio 2015浮动定位
CSS Visual Studio 2015 Float positioning
在我在我的大学使用的 PC 上,我的 DIVs 的定位在 Visual Studio 2015 社区的设计视图和互联网 Explorer/Chrome 浏览器调试模式下都工作正常.它看起来像这样:
在家里,我使用的 Visual Studio 版本与大学时相同。
想法是应该有 3 行,每行有 3 divs。中间的div应该比左右宽,left_mid/right_midtop_mid/bot_midDIV应该有边框
我把float:left
放在左边divs(left_top,left_mid,left_bot),float:right
放在divs 我想放在右边(right_top, right_mid, right_bot) 和 width:auto
在中间 divs(mid_top , mid_mid, mid_bot).
想法很简单,而且效果很好。当我在家里打开解决方案时,DIV 看起来就像它们在设计视图中应该的那样 - 但是在浏览器视图中当我使用 IE/Chrome 进行调试时 - 由于某种原因它们没有任何高度。一段时间后,我发现出于某种原因我不得不在 FORM 上设置高度和宽度,然后那些小家伙又恢复了他们的高度。
为什么?不知道,之前FORM上不需要设置高宽。
但是,这并不能解决问题。他们的位置不正确 - left_top DIV 是它应该在的位置 - 在页面的左上角。 Right_top DIV 的位置也正确,它在我页面的右上角。但是,由于某些未知原因,中间 DIV(mid_top) 与 left_top div 位于同一位置。
它适用于所有行 - mid_top/mid_mid/mid_bot div 与 left_top/left_mid/left_bot div 完全位于同一位置(正如我仅在浏览器中所说的那样调试视图,在设计视图中它看起来都很好)。
为了更容易理解,下面是我对问题的描述:
代码如下:
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="left_side"></div>
<div id="right_side">
<div id="row1">
<div id="left_top"></div>
<div id="right_top"></div>
<div id="mid_top"></div>
</div>
<div id="row2">
<div id="left_mid"></div>
<div id="right_mid"></div>
<div id="mid_mid"></div>
</div>
<div id="row3">
<div id="left_bot"></div>
<div id="right_bot"></div>
<div id="mid_bot"></div>
</div>
</div>
</div>
</form>
</body>
</html>
和CSS样式表:
body {
height:800px;
width:1200px;
}
#form1{
height:800px;
width:1200px;
}
#page{
height:800px;
width:1200px;
}
#left_side{
height:100%;
width:25%;
float:left;
}
#right_side{
height:100%;
width:75%;
float:right;
}
#row1{
height:33%;
width:100%;
}
#left_top{
height:100%;
width:25%;
float:left;
}
#right_top{
height:100%;
width:25%;
float:right;
}
#mid_top{
height:100%;
width:50%;
border:dashed;
border-width:1px;
}
#row2{
height:33%;
width:100%;
}
#left_mid{
height:100%;
width:25%;
float:left;
border:dashed;
border-width:1px;
}
#right_mid{
height:100%;
width:25%;
float:right;
border:dashed;
border-width:1px;
}
#mid_mid{
height:100%;
width:50%;
}
#row3{
height:33%;
width:100%;
}
#left_bot{
height:100%;
width:25%;
float:left;
}
#right_bot{
height:100%;
width:25%;
float:right;
}
#mid_bot{
height:100%;
width:50%;
border:dashed;
border-width:1px;
}
Left_side DIV 在这里是不必要的——我稍后会在项目中使用它。所有的动作都在right_sideDIV中。
如您所见,我尝试添加一些元数据 header 但我不完全知道它在做什么,而且它并没有改变任何东西。
我也尝试过设置 display:block、display:inline、display:inline-block 等设置,但无济于事...我不知道为什么以前工作正常的时候现在还工作。
给你,一个你正在尝试做的工作的例子 - 我改变了 HTML 和 CSS 一点,所以如果你受限于使用浮点数等等, 那么它将不起作用,但否则它会完全按照您的要求进行。
html,body {
margin: 0; padding; 0;
}
body {
height:800px;
width:1200px;
}
#form1{
height:800px;
width:1200px;
}
#page{
height:800px;
width:1200px;
}
#left_side{
height:100%;
width:25%;
float:left;
display: none;
}
#right_side{
height:100%;
width:75%;
float:right;
overflow: hidden;
}
#row1 div,#row2 div, #row3 div {
display: inline-block;
}
.row .left,.row .right {
width: 25%;
}
.row .middle {
width: 50%;
}
#left_top{
border: 1px solid blue;
}
#right_top{
border: 1px solid green;
}
#mid_top{
border: 1px dashed brown;
}
#left_mid{
border: 1px solid blue;
}
#right_mid{
border: 1px solid green;
}
#left_bot{
border: 1px solid blue;
}
#right_bot{
border: 1px solid green;
}
#mid_bot{
border: 1px dashed brown;
}
#row1,#row2,#row3 {
border: 1px solid red;
height: 33%;
width: 100%;
}
div {
box-sizing: border-box;
}
div div {
height: 100%;
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="left_side"></div>
<div id="right_side">
<div id="row1" class="row">
<div id="left_top" class="left"></div><div id="mid_top" class="middle"></div><div id="right_top" class="right"></div>
</div>
<div id="row2" class="row">
<div id="left_mid" class="left"></div><div id="mid_mid" class="middle"></div><div id="right_mid" class="right"></div>
</div>
<div id="row3" class="row">
<div id="left_bot" class="left"></div><div id="mid_bot" class="middle"></div><div id="right_bot" class="right"></div>
</div>
</div>
</div>
</form>
</body>
</html>
我相信这更符合您的要求:
<div class="wrapper">
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
</div>
和css
.container {
width: 100%;
border: 1px solid black;
height: 50vh;
margin: 0;
}
.left {
width: 25%;
border: 1px solid black;
height: 100%;
float: left;
}
.middle {
width: auto;
height: 100%;
border: 1px solid black;
float: left;
}
.right {
width: 25%;
border: 1px solid black;
height: 100%;
float: right;
}
如果您要使用浮动,我建议您查看 float clearing so you don't run into problems in the future, or if you're feeling really adventurous, flex boxes。
此外,永远记住元素的高度总是相对于父容器的。如果元素上有 height: auto
并且未指定父元素高度链上的任何父元素,则高度将显示为零。
我有一个没有浮动的解决方案。使用 flex-box 更直接。我希望你发现它很容易理解。我没有对您的代码进行太多更改,因此您可以看到。
/*an example of doing it with flexbox, I have not changed your syntax too much, so that you can figure out how it works */
body {
height: 800px;
width: 1200px;
}
#form1 {
display: flex;
flex-direction: column;
/*let the rows flex in column */
height: 800px;
width: 1200px;
}
#page {
height: 800px;
width: 1200px;
}
#row1,
#row2,
#row3 {
display: flex;
height: 33%;
width: 100%;
}
#left_top,
#right_top {
flex-grow: 1;
/*specifies how much the item will grow relative to the rest of the flexible items inside the same container. */
height: 100%;
}
#mid_top,
#left_mid,
#mid_bot,
#right_mid {
flex-grow: 1;
height: 100%;
border: dashed;
border-width: 1px;
}
#mid_mid,
#left_bot,
#right_bot {
flex-grow: 1;
height: 100%;
}
<meta http-equiv="X-UA-Compatible" content="IE=8">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="row1">
<div id="left_top">left-top</div>
<div id="mid_top">mid-top</div>
<div id="right_top">right-top</div>
</div>
<div id="row2">
<div id="left_mid">left-mid</div>
<div id="mid_mid">mid-mid</div>
<div id="right_mid">right-mid</div>
</div>
<div id="row3">
<div id="left_bot">left-bot</div>
<div id="mid_bot">mid-bot</div>
<div id="right_bot">right-bot</div>
</div>
</div>
</form>
</body>
</html>
在我在我的大学使用的 PC 上,我的 DIVs 的定位在 Visual Studio 2015 社区的设计视图和互联网 Explorer/Chrome 浏览器调试模式下都工作正常.它看起来像这样:
在家里,我使用的 Visual Studio 版本与大学时相同。
想法是应该有 3 行,每行有 3 divs。中间的div应该比左右宽,left_mid/right_midtop_mid/bot_midDIV应该有边框
我把float:left
放在左边divs(left_top,left_mid,left_bot),float:right
放在divs 我想放在右边(right_top, right_mid, right_bot) 和 width:auto
在中间 divs(mid_top , mid_mid, mid_bot).
想法很简单,而且效果很好。当我在家里打开解决方案时,DIV 看起来就像它们在设计视图中应该的那样 - 但是在浏览器视图中当我使用 IE/Chrome 进行调试时 - 由于某种原因它们没有任何高度。一段时间后,我发现出于某种原因我不得不在 FORM 上设置高度和宽度,然后那些小家伙又恢复了他们的高度。 为什么?不知道,之前FORM上不需要设置高宽。
但是,这并不能解决问题。他们的位置不正确 - left_top DIV 是它应该在的位置 - 在页面的左上角。 Right_top DIV 的位置也正确,它在我页面的右上角。但是,由于某些未知原因,中间 DIV(mid_top) 与 left_top div 位于同一位置。
它适用于所有行 - mid_top/mid_mid/mid_bot div 与 left_top/left_mid/left_bot div 完全位于同一位置(正如我仅在浏览器中所说的那样调试视图,在设计视图中它看起来都很好)。
为了更容易理解,下面是我对问题的描述:
代码如下:
ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<meta http-equiv="X-UA-Compatible" content="IE=8">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="left_side"></div>
<div id="right_side">
<div id="row1">
<div id="left_top"></div>
<div id="right_top"></div>
<div id="mid_top"></div>
</div>
<div id="row2">
<div id="left_mid"></div>
<div id="right_mid"></div>
<div id="mid_mid"></div>
</div>
<div id="row3">
<div id="left_bot"></div>
<div id="right_bot"></div>
<div id="mid_bot"></div>
</div>
</div>
</div>
</form>
</body>
</html>
和CSS样式表:
body {
height:800px;
width:1200px;
}
#form1{
height:800px;
width:1200px;
}
#page{
height:800px;
width:1200px;
}
#left_side{
height:100%;
width:25%;
float:left;
}
#right_side{
height:100%;
width:75%;
float:right;
}
#row1{
height:33%;
width:100%;
}
#left_top{
height:100%;
width:25%;
float:left;
}
#right_top{
height:100%;
width:25%;
float:right;
}
#mid_top{
height:100%;
width:50%;
border:dashed;
border-width:1px;
}
#row2{
height:33%;
width:100%;
}
#left_mid{
height:100%;
width:25%;
float:left;
border:dashed;
border-width:1px;
}
#right_mid{
height:100%;
width:25%;
float:right;
border:dashed;
border-width:1px;
}
#mid_mid{
height:100%;
width:50%;
}
#row3{
height:33%;
width:100%;
}
#left_bot{
height:100%;
width:25%;
float:left;
}
#right_bot{
height:100%;
width:25%;
float:right;
}
#mid_bot{
height:100%;
width:50%;
border:dashed;
border-width:1px;
}
Left_side DIV 在这里是不必要的——我稍后会在项目中使用它。所有的动作都在right_sideDIV中。
如您所见,我尝试添加一些元数据 header 但我不完全知道它在做什么,而且它并没有改变任何东西。
我也尝试过设置 display:block、display:inline、display:inline-block 等设置,但无济于事...我不知道为什么以前工作正常的时候现在还工作。
给你,一个你正在尝试做的工作的例子 - 我改变了 HTML 和 CSS 一点,所以如果你受限于使用浮点数等等, 那么它将不起作用,但否则它会完全按照您的要求进行。
html,body {
margin: 0; padding; 0;
}
body {
height:800px;
width:1200px;
}
#form1{
height:800px;
width:1200px;
}
#page{
height:800px;
width:1200px;
}
#left_side{
height:100%;
width:25%;
float:left;
display: none;
}
#right_side{
height:100%;
width:75%;
float:right;
overflow: hidden;
}
#row1 div,#row2 div, #row3 div {
display: inline-block;
}
.row .left,.row .right {
width: 25%;
}
.row .middle {
width: 50%;
}
#left_top{
border: 1px solid blue;
}
#right_top{
border: 1px solid green;
}
#mid_top{
border: 1px dashed brown;
}
#left_mid{
border: 1px solid blue;
}
#right_mid{
border: 1px solid green;
}
#left_bot{
border: 1px solid blue;
}
#right_bot{
border: 1px solid green;
}
#mid_bot{
border: 1px dashed brown;
}
#row1,#row2,#row3 {
border: 1px solid red;
height: 33%;
width: 100%;
}
div {
box-sizing: border-box;
}
div div {
height: 100%;
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="left_side"></div>
<div id="right_side">
<div id="row1" class="row">
<div id="left_top" class="left"></div><div id="mid_top" class="middle"></div><div id="right_top" class="right"></div>
</div>
<div id="row2" class="row">
<div id="left_mid" class="left"></div><div id="mid_mid" class="middle"></div><div id="right_mid" class="right"></div>
</div>
<div id="row3" class="row">
<div id="left_bot" class="left"></div><div id="mid_bot" class="middle"></div><div id="right_bot" class="right"></div>
</div>
</div>
</div>
</form>
</body>
</html>
我相信这更符合您的要求:
<div class="wrapper">
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
</div>
和css
.container {
width: 100%;
border: 1px solid black;
height: 50vh;
margin: 0;
}
.left {
width: 25%;
border: 1px solid black;
height: 100%;
float: left;
}
.middle {
width: auto;
height: 100%;
border: 1px solid black;
float: left;
}
.right {
width: 25%;
border: 1px solid black;
height: 100%;
float: right;
}
如果您要使用浮动,我建议您查看 float clearing so you don't run into problems in the future, or if you're feeling really adventurous, flex boxes。
此外,永远记住元素的高度总是相对于父容器的。如果元素上有 height: auto
并且未指定父元素高度链上的任何父元素,则高度将显示为零。
我有一个没有浮动的解决方案。使用 flex-box 更直接。我希望你发现它很容易理解。我没有对您的代码进行太多更改,因此您可以看到。
/*an example of doing it with flexbox, I have not changed your syntax too much, so that you can figure out how it works */
body {
height: 800px;
width: 1200px;
}
#form1 {
display: flex;
flex-direction: column;
/*let the rows flex in column */
height: 800px;
width: 1200px;
}
#page {
height: 800px;
width: 1200px;
}
#row1,
#row2,
#row3 {
display: flex;
height: 33%;
width: 100%;
}
#left_top,
#right_top {
flex-grow: 1;
/*specifies how much the item will grow relative to the rest of the flexible items inside the same container. */
height: 100%;
}
#mid_top,
#left_mid,
#mid_bot,
#right_mid {
flex-grow: 1;
height: 100%;
border: dashed;
border-width: 1px;
}
#mid_mid,
#left_bot,
#right_bot {
flex-grow: 1;
height: 100%;
}
<meta http-equiv="X-UA-Compatible" content="IE=8">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="StyleSheet1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<div id="row1">
<div id="left_top">left-top</div>
<div id="mid_top">mid-top</div>
<div id="right_top">right-top</div>
</div>
<div id="row2">
<div id="left_mid">left-mid</div>
<div id="mid_mid">mid-mid</div>
<div id="right_mid">right-mid</div>
</div>
<div id="row3">
<div id="left_bot">left-bot</div>
<div id="mid_bot">mid-bot</div>
<div id="right_bot">right-bot</div>
</div>
</div>
</form>
</body>
</html>