Bootstrap没有显示全高度列

时间:2014-10-13 15:06:35

标签: html css twitter-bootstrap

请原谅,如果这是一个新手问题,或者只是不正确的问题类型。我正处于学习如何编程的开始阶段,我的第一个任务之一是让我的注释编辑器工作。

我使用bootstrap来创建列;即,右边的列(sceen的十二分之一)包含不同的颜色,另一个第11/12列包含整个注释编辑器(图片等)。这一切都运作良好,除了我的右栏不起作用或出现的事实。

我想我很确定我关闭了前11个部分的列,但尝试用1列创建另一个div根本不起作用;因此,我不能把任何东西放在里面,也不能把我的颜色放在那里。

HTML语法如下所示:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="2048_MMA/style/bootstrap.min.css" type ="text/css">
<link rel="stylesheet" href="css/clouds.css" type="text/css">
<link rel="stylesheet" href="css/background.css" type="text/css">
<link rel="stylesheet" type="text/css" href="css/dropdownmenu.css"/>
<style>
body{
background: #c9dbe9;
background: -webkit-linear-gradient(top, #c9dbe9 0%, #fff 100%);
background: -linear-gradient(top, #c9dbe9 0%, #fff 100%);
background: -moz-linear-gradient(top, #c9dbe9 0%, #fff 100%);
padding-bottom: 500px;
}
iframe {
height: 670px;
width: 1200px;
margin-left:25%;
}
</style>
</head>

<body onload="init()">
    <nav class="nav">
        <ul>
            <li>
                <a href="portfolio_index.html">Home</a>
            </li>
            <li>
                <a href="#">Applications</a>
                <ul>
                    <li><a href="mediaviewer.html">Mediaviewer</a></li>
                    <li><a href="annotation editor.html">Annotation editor</a></li>
                    <li><a href="2048_MMA/portfolio_2048_water.html">2048</a></li>
                </ul>
            </li>
            <li>
                <a href="#">Essays</a>
                <ul>
                    <li><a href="#">Essay Lea</a></li>
                    <li><a href="#">Essay Jonathan</a></li>
                    <li><a href="#">Essay Jelmer</a></li>
                </ul>
            </li>
        </ul>
    </nav>

    <div class="container-fluid">
        <div class="row">
            <div class="col-md-11">
                <script type="text/javascript">
                    var canvas, ctx, flag = false,
                            prevX = 0,
                            currX = 0,
                            prevY = 0,
                            currY = 0,
                            dot_flag = false;

                    var x = "black",
                            y = 2;

                    function init() {
                        canvas = document.getElementById('can');
                        ctx = canvas.getContext("2d");
                        w = canvas.width;
                        h = canvas.height;

                        canvas.addEventListener("mousemove", function(e) {
                            findxy('move', e)
                        }, false);
                        canvas.addEventListener("mousedown", function(e) {
                            findxy('down', e)
                        }, false);
                        canvas.addEventListener("mouseup", function(e) {
                            findxy('up', e)
                        }, false);
                        canvas.addEventListener("mouseout", function(e) {
                            findxy('out', e)
                        }, false);
                    }

                    function color(obj) {
                        switch (obj.id) {
                            case "green":
                                x = "green";
                                break;
                            case "blue":
                                x = "blue";
                                break;
                            case "red":
                                x = "red";
                                break;
                            case "yellow":
                                x = "yellow";
                                break;
                            case "orange":
                                x = "orange";
                                break;
                            case "black":
                                x = "black";
                                break;
                            case "purple":
                                x = "purple";
                                break;
                            case "grey":
                                x = "grey";
                                break;
                        }
                        if (x == "white")
                            y = 14;
                        else
                            y = 2;

                    }

                    function draw() {
                        ctx.beginPath();
                        ctx.moveTo(prevX, prevY);
                        ctx.lineTo(currX, currY);
                        ctx.strokeStyle = x;
                        ctx.lineWidth = y;
                        ctx.stroke();
                        ctx.closePath();
                    }

                    function erase() {
                        var m = confirm("Verwijder je kunstwerk?");
                        if (m) {
                            ctx.clearRect(0, 0, w, h);
                            document.getElementById("canvasimg").style.display = "none";
                        }
                    }
                    function findxy(res, e) {
                        if (res == 'down') {
                            prevX = currX;
                            prevY = currY;
                            currX = e.clientX - canvas.offsetLeft;
                            currY = e.clientY - canvas.offsetTop;

                            flag = true;
                            dot_flag = true;
                            if (dot_flag) {
                                ctx.beginPath();
                                ctx.fillStyle = x;
                                ctx.fillRect(currX, currY, 2, 2);
                                ctx.closePath();
                                dot_flag = false;
                            }
                        }
                        if (res == 'up' || res == "out") {
                            flag = false;
                        }
                        if (res == 'move') {
                            if (flag) {
                                prevX = currX;
                                prevY = currY;
                                currX = e.clientX - canvas.offsetLeft;
                                currY = e.clientY - canvas.offsetTop;
                                draw();
                            }
                        }
                    }
                </script>
                <iframe src="mediaviewer2.html"></iframe>
                <canvas id="can" width="1080%" height="610%" style="position:absolute;top:0.5%;left:29%;border:5px solid;"></canvas>
                <img id="canvasimg" style="position:absolute;top:30%;left:54%;">
                <input type="button" value="Reset" id="clr" size="23" onclick="erase()" style="position:absolute;top:15%;left:55%;height:40px;width:50px;">
            </div> <!--end column--->

            <div class="col-md-1">
                <div style="position:absolute;top:%;left:50%;">Kies een kleurtje!</div>
                <div style="position:absolute;top:15%;left:50%;width:15px;height:15px;background:green;" id="green" onclick="color(this)"></div>
                <div style="position:absolute;top:15%;left:51%;width:15px;height:15px;background:blue;" id="blue" onclick="color(this)"></div>
                <div style="position:absolute;top:15%;left:52%;width:15px;height:15px;background:red;" id="red" onclick="color(this)"></div>
                <div style="position:absolute;top:20%;left:50%;width:15px;height:15px;background:yellow;" id="yellow" onclick="color(this)"></div>
                <div style="position:absolute;top:20%;left:51%;width:15px;height:15px;background:orange;" id="orange" onclick="color(this)"></div>
                <div style="position:absolute;top:20%;left:52%;width:15px;height:15px;background:black;" id="black" onclick="color(this)"></div>
                <div style="position:absolute;top:20%;left:53%;width:15px;height:15px;background:purple;" id="purple" onclick="color(this)"></div>
                <div style="position:absolute;top:15%;left:53%;width:15px;height:15px;background:grey;" id="grey" onclick="color(this)"></div>
            </div>


            <div id="clouds">
                <div class="cloud x1"></div>
                <div class="cloud x2"></div>
                <div class="cloud x3"></div>
                <div class="cloud x4"></div>
                <div class="cloud x5"></div>
                <div class="cloud x6"></div>
                <div class="cloud x7"></div>
                <div class="cloud x8"></div>
                <div class="cloud x9"></div>
                <div class="cloud x10"></div>
                <div class="cloud x11"></div>
            </div> <!--end clouds-->
        </div><!--end row-->    
    </div><!--end container-->
</body>         

这张照片描绘了我的意思。你能发现HTML标记本身的任何错误吗? http://imgur.com/qKBroc9

1 个答案:

答案 0 :(得分:0)

我看到了几个潜在的问题。

一个是你的iframe宽度为1200px,高度为670px。这没有回应。因此,在较小的视口上,您将无法看到整个内容,它将突破列。令人高兴的是,Bootstrap提供了一些很好的功能来使您的iframe响应。为此,您需要使用Bootstrap Responsive Embed类。这样就形成了一个容器,其内在比例为4:3或16:9。基本上这意味着iframe与这两个比率中的一个成比例,并使您不必指定固定值。应用的标记如下所示:

<div class="embed-responsive embed-responsive-16by9">
  <iframe class="embed-responsive-item" src="…"></iframe>
</div>

现在,您还可以将canvas元素的宽度和高度设置为100%,并将top / left / bottom / right属性设置为0,这样它将填充与iframe相同的空间,而不管其大小如何视口。

第二个问题是您已将col-md-1 div中的所有内容设置为绝对定位,并且您使用%作为顶部和左侧值。这不起作用,因为没有内容的div的高度为0.因此,除非你给col-md-1一个固定的高度值,否则你只能将内容定位为0 (并且0的50%仍为0)。为柱子提供固定的高度当然是一种选择,但同样它也不是非常敏感。这里更好的选择是为顶部和左侧属性使用固定值。毕竟,您正在定位具有固定大小的元素,因此只要您为每个元素提供至少15px的空间,它们就没有问题。

到目前为止,最好的选择是不对这些元素使用绝对定位,只需将元素放在文档流中即可。你甚至可以使用类似于Bootstrap的响应式嵌入中使用的css技巧来创建一个具有比例高度和宽度的元素,然后按照整体设计进行缩放。您可以在演示中看到,无论视口的大小如何,颜色块都会随之缩放。

DEMO

我还调整了演示,使用传统的内置Bootstrap功能进行按钮,导航和下拉。学习使用框架提供的内容肯定有助于节省开发,测试和维护的时间和精力。