javascript - 滚动条和元素 - HTML/CSS

标签 javascript php html css

我有个小问题。

我尝试创建一个社交媒体平台 - 一切正常。

但这让我很烦:我想创建一个区域,里面有帖子。如果超过 3 个,则必须用鼠标滚动。滚动条不在正确的位置。

这里是错误的设计(但“正确”的技术):

The Wrong Design

这里控制起来更清晰、更简单。 The Correct Design

我的想法是:帖子区应该是滚动的。

我的 CSS:

* {
    box-sizing:border-box;
}
a {
    text-decoration:none;
    color:#FFF;
}
a:hover {
    color:#F5F5F5;
}
body {
    margin:0px;
    width:100%;
    height:100%;
    background-color:#99cc99;
    font-family:'Open Sans';
    overflow-y: scroll;
}
.website {
    position:absolute;
    left:50%;
    margin-left:-540px;
    width:1080px;
    height:100%;
    background-color:#99cc99;
    border-collapse: separate;
}

#menu {
    position:fixed;
    top:0px;
    width:1080px;
    height:50px;
    background-color:#6dbd6c;
}
#partition-horizontal {
    height:0px;
    background-color:#99cc99;
    }
#content {
    width:100%;
    height:auto;
    background-color:transparent;
}
#left-top {
    width:330px;
    height:50px;
    border-bottom:2px solid #437C42;
}
#partition1 {
    background-color:#6dbd6c;
    width:10px;
    height:50px;
    border-bottom:2px solid #437C42;
}
#right-top {
    width:770px;
    border-bottom:2px solid #437C42;
    height:50px;
}
#right-top .menu {
    position:relative;
    float:left;

}
#right-top .menu a {
    height:100%;
    width:auto;
    padding-top:15px;
    padding-bottom:15px;
    padding-left:15px;
    padding-right:15px;
}
#right-top .menu a:hover {
    background-color:rgba(0,0,0,0.15);
    color:#fff;
}
#right-top .menu a:first-child {
    margin-left:-0px;
}
#left-bottom {
    clear:both;
    width:330px;
    height:auto;
    background-color:#fff;
}
#right-bottom {
    clear:both;
    width:770px;
    overflow:auto;
}

#partition2 {
    background-color:#99cc99;
    width:10px;
}
#left-bottom-area {
padding:;
width:100%;
height:851px;
clear:both;
}
#right-bottom-area {
padding:;
width:100%;
min-height:887px;
height:auto;
clear:both;
}
#right-bottom-area #poster {
    width:100%;
    height:300px;
    background-color:#FFF;
    border-bottom-right-radius:3px;
    border-bottom-left-radius:3px;
    margin-bottom:10px;
}
#right-bottom-area #real-content {
    width:100%;
    height:auto;
    background-color:#FFFFFF;
    border-top-right-radius:3px;
    border-top-left-radius:3px;
    color:#111111;
    overflow:hidden;
}

#real-content p {
    width:100%;
    height:200px;
    background-color:#FFFFFF;
    border-bottom:1px solid #99cc99;
    padding:15px;
    margin-top:0px;
    margin-bottom:0px;
}

#real-content p:hover {
    background-color:rgba(0,0,0,0.02);
}
#real-content p:last-child {
    border-bottom:none;
}

我的 HTML/PHP:

<?php

$links = $_SERVER['REQUEST_URI'];
preg_match("/[^\/]+$/", $links, $matches);
$link = $matches[0];


?>


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>box6</title>
<link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="./design.css" />
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="./resources/scripts/js/main.js"></script>
</head>

<body>


<table class="website" cellspacing="0">
  <tr id="menu">
    <th id="left-top"></th>
    <td id="partition1"></td>
    <th id="right-top">
        <div class="menu">
            <a href="./me">Home</a>
            <a href="./friends">Friends</a>
            <a href="./gallery">Gallery</a>
            <a href="./settings">Settings</a>
        </div>
    </th>
  </tr>
  <tr id="partition-horizontal"></tr>
  <tr id="content">
    <td id="left-bottom">
        <div id="left-bottom-area"></div>
    </td>
    <td id="partition2"></td>
    <td id="right-bottom">
        <div id="right-bottom-area">
        <?php
            if($link == "me"){
            ?>
            <div id="poster">

            </div>
            <div id="real-content" full-site="false">
                <?php



                //HERE IS THE POSTS-AREA
                for ($i = 0; $i < 10; $i++) {
                    echo "<p>".$i."</p>";
                }



                ?>
            </div>
            <?php
            }else {
            ?>
            <div id="real-content" full-site="true" style="border-radius:0px;">

            </div>
            <?php   
            }
        ?>

        </div>
    </td>
  </tr>
</table>
</body>
</html>

最佳答案

您的代码有很多问题。

我建议不要使用表格,而是使用 div 进行布局。表格通常应该只用于显示表格数据。 另外,你的溢出有很多问题,不应该有任何绝对定位。 最后,我建议您使用 CSS calc() 函数来计算宽度和高度。 IE9 支持。

height: calc(100% - 30px);

这是我的操作方法(可能需要一些额外的修改):

http://codepen.io/jlowcs/pen/dPKKdB

HTML:

<div class="website" cellspacing="0">
  <div id="menu">
    <div id="left-top"></div
    ><div id="partition1"></div
    ><div id="right-top">
        <div class="menu">
            <a href="./me">Home</a>
            <a href="./friends">Friends</a>
            <a href="./gallery">Gallery</a>
            <a href="./settings">Settings</a>
        </div>
    </div>
  </div>
  <div id="partition-horizontal"></div>
  <div id="content">
    <div id="left-bottom">
        <div id="left-bottom-area"></div>
    </div
    ><div id="partition2"></div
    ><div id="right-bottom">
        <div id="right-bottom-area">
            <div id="poster">

            </div>
            <div id="real-content" full-site="false">
              <p>1</p>
              <p>2</p>
              <p>3</p>
              <p>4</p>
              <p>5</p>
            </div>
        </div>
    </div>
  </div>
</div>

CSS:

html, body {
    height: 100%;
}

* {
    box-sizing:border-box;
}
a {
    text-decoration:none;
    color:#FFF;
}
a:hover {
    color:#F5F5F5;
}
body {
    margin:0px;
    width:100%;
    height:100%;
    background-color:#99cc99;
    font-family:'Open Sans';
}
.website {
    margin: auto;
    width:1080px;
    height:100%;
    background-color:#99cc99;
    border-collapse: separate;
}

#menu {
    width:1080px;
    height:50px;
    background-color:#6dbd6c;
}
#menu > * {
    display: inline-block;
}
#partition-horizontal {
    height:0px;
    background-color:#99cc99;
}
#content {
    overflow: hidden;  /* FIXED */
    height: calc(100% - 50px);  /* FIXED */
    width: 100%;
    background-color:transparent;
}
#left-top {
    width:330px;
    height:50px;
    border-bottom:2px solid #437C42;
}
#partition1 {
    background-color:#6dbd6c;
    width:10px;
    height:50px;
    border-bottom:2px solid #437C42;
}
#right-top {
    width: calc(100% - 330px - 10px);
    border-bottom:2px solid #437C42;
    height:50px;
}
#right-top .menu {
    height:100%;
    position:relative;
    float:left;

}
#right-top .menu a {
    line-height: 48px;
    padding-left:15px;
    padding-right:15px;
}
#right-top .menu a:hover {
    background-color:rgba(0,0,0,0.15);
    color:#fff;
}
#right-top .menu a:first-child {
    margin-left:-0px;
}

#content > * {
    display: inline-block;
    vertical-align: top;
}

#left-bottom {
    width: 330px;
    height: 100%;
    background-color: #fff;
}

#partition2 {
    background-color: #99cc99;
    width: 10px;
    height: 100%;
}
#left-bottom-area {
    overflow: auto;
    width:100%;
}
#right-bottom {
    width: calc(100% - 330px - 10px);
    height: 100%;
}
#right-bottom-area {
    height: 100%;
}
#right-bottom-area #poster {
    height:300px;
    background-color:#FFF;
    border-bottom-right-radius:3px;
    border-bottom-left-radius:3px;
    margin-bottom:10px;
}
#right-bottom-area #real-content {
    width: 100%;
    height: calc(100% - 300px - 10px);
    background-color:#FFFFFF;
    border-top-right-radius:3px;
    border-top-left-radius:3px;
    color:#111111;
    overflow:auto; /* FIXED */
}

#real-content p {
    width:100%;
    height:200px;
    background-color:#FFFFFF;
    border-bottom:1px solid #99cc99;
    padding:15px;
    margin-top:0px;
    margin-bottom:0px;
}

#real-content p:hover {
    background-color:rgba(0,0,0,0.02);
}
#real-content p:last-child {
    border-bottom:none;
}

关于javascript - 滚动条和元素 - HTML/CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28782166/

相关文章:

html - 用于格式化 DIV 内容的 CSS @media-like 规则

javascript - 检查输入时切换标签类 javascript

javascript - 使用原始索引枚举切片数组

javascript - Chai 将错误记录到控制台而不是测试失败

php - 如何从 S3 中删除

javascript - 使用 AudioContext 时如何获得常规的 <audio> 功能?

javascript - 通过鼠标悬停操作从图像数组中选择特定图像

php - 在不刷新页面的情况下形成验证码

java - 通过 HTTP 发送 XML 时出现问题

javascript - 从日期选择器中获取日期并将其显示在 div 中