我有一个侧边栏,页脚固定在侧边栏的底部。我想在遇到短高度时添加一个可滚动的侧边栏。
我的HTML :
<div>
<aside>
<header>
....
</header>
<ul>
<li> ... </li>
<li> ... </li>
</ul>
<footer>
<li> ... </li>
</footer>
</aside>
....
....
</div>
我的CSS :
.aside {
background:yellow;
overflow-y:scroll;
min-height:100vh; // I also tried height: 100%;
}
.header {
overflow: hidden;
}
.ul {
...
}
.footer {
position:fixed;
bottom:0;
}
当我height:100%
时,似乎忽略了页脚的存在。另一方面,当我设置min-height:100vh
时,我的页脚会被修复,因此它会跟随浏览器的整个div
滚动条。
我想要实现的是,如果用户调整浏览器的高度,我希望侧边栏能够响应并显示可滚动的侧边栏。我更喜欢只使用CSS&amp; HTML来实现这种行为。
答案 0 :(得分:3)
下面是我通常如何创建侧边栏的示例。 (我认为你是在以下的事情之后)。我为div
周围的aside
包装器添加了一些样式,只是为了拥有一些&#34; global&#34;侧边栏本身的CSS。
我还添加了一些内容来展示它的工作原理。 footer
正在按预期工作。我遇到的一个问题是,要设置页脚的width
,您不能使用百分比,因为它的位置为fixed
它是&#34; relative&#34;到窗口而不是它的父元素。
当然这个例子需要一些改进,但希望它会指出你正确的解决方案。
html, body {
height: 100%;
}
#sidebar-wrapper {
position: fixed;
width: 250px;
height: 100%;
float: left;
}
aside {
background:yellow;
overflow-y:scroll;
height: 100%;
width: 100%;
position: relative;
}
header {
overflow: hidden;
}
ul {
}
footer {
position: fixed;
bottom: 0;
background-color: red;
}
main {
margin-left: 250px;
float: left;
}
&#13;
<div id="sidebar-wrapper">
<aside>
<header>
My Header
</header>
<ul>
<li>Sidebar Item 1</li>
<li>Sidebar Item 2</li>
<li>Sidebar Item 3</li>
<li>Sidebar Item 4</li>
<li>Sidebar Item 5</li>
<li>Sidebar Item 6</li>
<li>Sidebar Item 7</li>
<li>Sidebar Item 8</li>
<li>Sidebar Item 9</li>
<li>Sidebar Item 10</li>
<li>Sidebar Item 11</li>
<li>Sidebar Item 12</li>
<li>Sidebar Item 13</li>
<li>Sidebar Item 14</li>
<li>Sidebar Item 15</li>
<li>Sidebar Item 16</li>
<li>Sidebar Item 17</li>
<li>Sidebar Item 18</li>
<li>Sidebar Item 19</li>
<li>Sidebar Item 20</li>
<li>Sidebar Item 21</li>
<li>Sidebar Item 22</li>
<li>Sidebar Item 23</li>
<li>Sidebar Item 24</li>
<li>Sidebar Item 25</li>
<li>Sidebar Item 26</li>
<li>Sidebar Item 27</li>
<li>Sidebar Item 28</li>
<li>Sidebar Item 29</li>
<li>Sidebar Item 30</li>
<li>Sidebar Item 31</li>
<li>Sidebar Item 32</li>
<li>Sidebar Item 33</li>
<li>Sidebar Item 34</li>
<li>Sidebar Item 35</li>
<li>Sidebar Item 36</li>
<li>Sidebar Item 37</li>
<li>Sidebar Item 38</li>
<li>Sidebar Item 39</li>
<li>Sidebar Item 40</li>
<li>Sidebar Item 41</li>
<li>Sidebar Item 42</li>
<li>Sidebar Item 43</li>
<li>Sidebar Item 44</li>
<li>Sidebar Item 45</li>
<li>Sidebar Item 46</li>
<li>Sidebar Item 47</li>
<li>Sidebar Item 48</li>
<li>Sidebar Item 49</li>
<li>Sidebar Item 50</li>
<li>Sidebar Item 51</li>
<li>Sidebar Item 52</li>
<li>Sidebar Item 53</li>
<li>Sidebar Item 54</li>
<li>Sidebar Item 55</li>
<li>Sidebar Item 56</li>
<li>Sidebar Item 57</li>
<li>Sidebar Item 58</li>
<li>Sidebar Item 59</li>
<li>Sidebar Item 60</li>
<li>Sidebar Item 61</li>
<li>Sidebar Item 62</li>
<li>Sidebar Item 63</li>
<li>Sidebar Item 64</li>
<li>Sidebar Item 65</li>
<li>Sidebar Item 66</li>
<li>Sidebar Item 67</li>
<li>Sidebar Item 68</li>
<li>Sidebar Item 69</li>
<li>Sidebar Item 70</li>
<li>Sidebar Item 71</li>
<li>Sidebar Item 72</li>
<li>Sidebar Item 73</li>
<li>Sidebar Item 74</li>
<li>Sidebar Item 75</li>
<li>Sidebar Item 76</li>
<li>Sidebar Item 77</li>
<li>Sidebar Item 78</li>
<li>Sidebar Item 79</li>
<li>Sidebar Item 80</li>
<li>Sidebar Item 81</li>
<li>Sidebar Item 82</li>
<li>Sidebar Item 83</li>
<li>Sidebar Item 84</li>
<li>Sidebar Item 85</li>
<li>Sidebar Item 86</li>
<li>Sidebar Item 87</li>
<li>Sidebar Item 88</li>
<li>Sidebar Item 89</li>
<li>Sidebar Item 90</li>
<li>Sidebar Item 91</li>
<li>Sidebar Item 92</li>
<li>Sidebar Item 93</li>
<li>Sidebar Item 94</li>
<li>Sidebar Item 95</li>
<li>Sidebar Item 96</li>
<li>Sidebar Item 97</li>
<li>Sidebar Item 98</li>
<li>Sidebar Item 99</li>
<li>Sidebar Item 100</li>
</ul>
<footer>
<li> My Footer </li>
</footer>
</aside>
</div>
<main>
<h1>Content</h1>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
<li>23</li>
<li>24</li>
<li>25</li>
<li>26</li>
<li>27</li>
<li>28</li>
<li>29</li>
<li>30</li>
<li>31</li>
<li>32</li>
<li>33</li>
<li>34</li>
<li>35</li>
<li>36</li>
<li>37</li>
<li>38</li>
<li>39</li>
<li>40</li>
<li>41</li>
<li>42</li>
<li>43</li>
<li>44</li>
<li>45</li>
<li>46</li>
<li>47</li>
<li>48</li>
<li>49</li>
<li>50</li>
<li>51</li>
<li>52</li>
<li>53</li>
<li>54</li>
<li>55</li>
<li>56</li>
<li>57</li>
<li>58</li>
<li>59</li>
<li>60</li>
<li>61</li>
<li>62</li>
<li>63</li>
<li>64</li>
<li>65</li>
<li>66</li>
<li>67</li>
<li>68</li>
<li>69</li>
<li>70</li>
<li>71</li>
<li>72</li>
<li>73</li>
<li>74</li>
<li>75</li>
<li>76</li>
<li>77</li>
<li>78</li>
<li>79</li>
<li>80</li>
<li>81</li>
<li>82</li>
<li>83</li>
<li>84</li>
<li>85</li>
<li>86</li>
<li>87</li>
<li>88</li>
<li>89</li>
<li>90</li>
<li>91</li>
<li>92</li>
<li>93</li>
<li>94</li>
<li>95</li>
<li>96</li>
<li>97</li>
<li>98</li>
<li>99</li>
<li>100</li>
<li>101</li>
<li>102</li>
<li>103</li>
<li>104</li>
<li>105</li>
<li>106</li>
<li>107</li>
<li>108</li>
<li>109</li>
<li>110</li>
<li>111</li>
<li>112</li>
<li>113</li>
<li>114</li>
<li>115</li>
<li>116</li>
<li>117</li>
<li>118</li>
<li>119</li>
<li>120</li>
<li>121</li>
<li>122</li>
<li>123</li>
<li>124</li>
<li>125</li>
<li>126</li>
<li>127</li>
<li>128</li>
<li>129</li>
<li>130</li>
<li>131</li>
<li>132</li>
<li>133</li>
<li>134</li>
<li>135</li>
<li>136</li>
<li>137</li>
<li>138</li>
<li>139</li>
<li>140</li>
<li>141</li>
<li>142</li>
<li>143</li>
<li>144</li>
<li>145</li>
<li>146</li>
<li>147</li>
<li>148</li>
<li>149</li>
<li>150</li>
</ul>
</main>
&#13;
这是另一种方法,因为你不需要页脚fixed
。
html, body {
height: 100%;
}
#sidebar-wrapper {
position: fixed;
width: 250px;
height: 100%;
float: left;
}
aside {
background:yellow;
overflow-y:scroll;
height: 95%;
width: 100%;
}
header {
overflow: hidden;
}
ul {
}
footer {
background-color: red;
width: 100%;
}
main {
margin-left: 250px;
float: left;
}
&#13;
<div id="sidebar-wrapper">
<aside>
<header>
My Header
</header>
<ul>
<li>Sidebar Item 1</li>
<li>Sidebar Item 2</li>
<li>Sidebar Item 3</li>
<li>Sidebar Item 4</li>
<li>Sidebar Item 5</li>
<li>Sidebar Item 6</li>
<li>Sidebar Item 7</li>
<li>Sidebar Item 8</li>
<li>Sidebar Item 9</li>
<li>Sidebar Item 10</li>
<li>Sidebar Item 11</li>
<li>Sidebar Item 12</li>
<li>Sidebar Item 13</li>
<li>Sidebar Item 14</li>
<li>Sidebar Item 15</li>
<li>Sidebar Item 16</li>
<li>Sidebar Item 17</li>
<li>Sidebar Item 18</li>
<li>Sidebar Item 19</li>
<li>Sidebar Item 20</li>
<li>Sidebar Item 21</li>
<li>Sidebar Item 22</li>
<li>Sidebar Item 23</li>
<li>Sidebar Item 24</li>
<li>Sidebar Item 25</li>
<li>Sidebar Item 26</li>
<li>Sidebar Item 27</li>
<li>Sidebar Item 28</li>
<li>Sidebar Item 29</li>
<li>Sidebar Item 30</li>
<li>Sidebar Item 31</li>
<li>Sidebar Item 32</li>
<li>Sidebar Item 33</li>
<li>Sidebar Item 34</li>
<li>Sidebar Item 35</li>
<li>Sidebar Item 36</li>
<li>Sidebar Item 37</li>
<li>Sidebar Item 38</li>
<li>Sidebar Item 39</li>
<li>Sidebar Item 40</li>
<li>Sidebar Item 41</li>
<li>Sidebar Item 42</li>
<li>Sidebar Item 43</li>
<li>Sidebar Item 44</li>
<li>Sidebar Item 45</li>
<li>Sidebar Item 46</li>
<li>Sidebar Item 47</li>
<li>Sidebar Item 48</li>
<li>Sidebar Item 49</li>
<li>Sidebar Item 50</li>
<li>Sidebar Item 51</li>
<li>Sidebar Item 52</li>
<li>Sidebar Item 53</li>
<li>Sidebar Item 54</li>
<li>Sidebar Item 55</li>
<li>Sidebar Item 56</li>
<li>Sidebar Item 57</li>
<li>Sidebar Item 58</li>
<li>Sidebar Item 59</li>
<li>Sidebar Item 60</li>
<li>Sidebar Item 61</li>
<li>Sidebar Item 62</li>
<li>Sidebar Item 63</li>
<li>Sidebar Item 64</li>
<li>Sidebar Item 65</li>
<li>Sidebar Item 66</li>
<li>Sidebar Item 67</li>
<li>Sidebar Item 68</li>
<li>Sidebar Item 69</li>
<li>Sidebar Item 70</li>
<li>Sidebar Item 71</li>
<li>Sidebar Item 72</li>
<li>Sidebar Item 73</li>
<li>Sidebar Item 74</li>
<li>Sidebar Item 75</li>
<li>Sidebar Item 76</li>
<li>Sidebar Item 77</li>
<li>Sidebar Item 78</li>
<li>Sidebar Item 79</li>
<li>Sidebar Item 80</li>
<li>Sidebar Item 81</li>
<li>Sidebar Item 82</li>
<li>Sidebar Item 83</li>
<li>Sidebar Item 84</li>
<li>Sidebar Item 85</li>
<li>Sidebar Item 86</li>
<li>Sidebar Item 87</li>
<li>Sidebar Item 88</li>
<li>Sidebar Item 89</li>
<li>Sidebar Item 90</li>
<li>Sidebar Item 91</li>
<li>Sidebar Item 92</li>
<li>Sidebar Item 93</li>
<li>Sidebar Item 94</li>
<li>Sidebar Item 95</li>
<li>Sidebar Item 96</li>
<li>Sidebar Item 97</li>
<li>Sidebar Item 98</li>
<li>Sidebar Item 99</li>
<li>Sidebar Item 100</li>
</ul>
</aside>
<footer>
<li> My Footer </li>
</footer>
</div>
<main>
<h1>Content</h1>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li>
<li>22</li>
<li>23</li>
<li>24</li>
<li>25</li>
<li>26</li>
<li>27</li>
<li>28</li>
<li>29</li>
<li>30</li>
<li>31</li>
<li>32</li>
<li>33</li>
<li>34</li>
<li>35</li>
<li>36</li>
<li>37</li>
<li>38</li>
<li>39</li>
<li>40</li>
<li>41</li>
<li>42</li>
<li>43</li>
<li>44</li>
<li>45</li>
<li>46</li>
<li>47</li>
<li>48</li>
<li>49</li>
<li>50</li>
<li>51</li>
<li>52</li>
<li>53</li>
<li>54</li>
<li>55</li>
<li>56</li>
<li>57</li>
<li>58</li>
<li>59</li>
<li>60</li>
<li>61</li>
<li>62</li>
<li>63</li>
<li>64</li>
<li>65</li>
<li>66</li>
<li>67</li>
<li>68</li>
<li>69</li>
<li>70</li>
<li>71</li>
<li>72</li>
<li>73</li>
<li>74</li>
<li>75</li>
<li>76</li>
<li>77</li>
<li>78</li>
<li>79</li>
<li>80</li>
<li>81</li>
<li>82</li>
<li>83</li>
<li>84</li>
<li>85</li>
<li>86</li>
<li>87</li>
<li>88</li>
<li>89</li>
<li>90</li>
<li>91</li>
<li>92</li>
<li>93</li>
<li>94</li>
<li>95</li>
<li>96</li>
<li>97</li>
<li>98</li>
<li>99</li>
<li>100</li>
<li>101</li>
<li>102</li>
<li>103</li>
<li>104</li>
<li>105</li>
<li>106</li>
<li>107</li>
<li>108</li>
<li>109</li>
<li>110</li>
<li>111</li>
<li>112</li>
<li>113</li>
<li>114</li>
<li>115</li>
<li>116</li>
<li>117</li>
<li>118</li>
<li>119</li>
<li>120</li>
<li>121</li>
<li>122</li>
<li>123</li>
<li>124</li>
<li>125</li>
<li>126</li>
<li>127</li>
<li>128</li>
<li>129</li>
<li>130</li>
<li>131</li>
<li>132</li>
<li>133</li>
<li>134</li>
<li>135</li>
<li>136</li>
<li>137</li>
<li>138</li>
<li>139</li>
<li>140</li>
<li>141</li>
<li>142</li>
<li>143</li>
<li>144</li>
<li>145</li>
<li>146</li>
<li>147</li>
<li>148</li>
<li>149</li>
<li>150</li>
</ul>
</main>
&#13;
另请注意,由于k2snowman69提到的flexbox也可以是一个解决方案,它使代码更容易实现这样的事情。
答案 1 :(得分:0)
这里的问题是,当你说高度为100%或100vh时,它并不知道页脚的高度,也没有考虑到它。已修复的位置会将其从&#34; flow&#34;然后你决定使用顶部,左边,右边,底部,高度和宽度来定位它。
如果页脚是固定高度,则可以使用calc(100% - fixedHeight)
如果您的页脚高度可变,我建议您查看flexbox布局以解决您的问题:https://css-tricks.com/snippets/css/a-guide-to-flexbox/