【问题标题】:Hidden side panel menu's padding leaves it partially visible隐藏的侧面板菜单的填充使其部分可见
【发布时间】:2019-08-27 20:56:15
【问题描述】:

滑出式侧面板菜单不会保留内部填充而不部分显示。

我已经剥离了整个网站并尝试更改几乎所有值,但两天的搜索没有任何效果 - 尽管我知道答案对于经验丰富的编码人员来说是显而易见的。

        .sidePanelTableA {
          height: 80%;
          width: 0;
          position: fixed;
          z-index: 20;      
          top: 0;
          background-color: red;
          overflow-x: hidden;
        }

        #mysidePanelTableA  {
          padding: 0px 0px 8px 0px;     
          <!--0 left padding makes dissapear move padding?-->
        }

        .closebtn {
          color: blue;
          position: absolute;
          right: 25px;
          font-size: 36px;
          margin-left: 50px;
        }
<svg viewbox="0 0 1200 600" preserveAspectRatio="none">
     <g transform="translate(300,364) scale(16)" >
     <g onclick="openPanelTableA()" >
     <rect style="display:inline; fill: yellow;"     
        width="5" height="3" />
</svg>
   function openPanelTableA() {
   document.getElementById("mySidePanelTableA").style.width = "250px";}

   function closePanelTableA() {
   document.getElementById("mySidePanelTableA").style.width = "0";}
<div id="mySidePanelTableA" class="sidePanelTableA">
      <a href="javascript:void(0)" 
               class="closebtn" 
               onclick="closePanelTableA()">
                  &times;
          </a>
          <br><br>
          TITLE
           <br><br>
       <img src="tableA.jpeg" height="200px">
</div>

我希望红色侧面板完全隐藏,但它会显示在屏幕左侧的填充宽度。如果我从面板中删除内部左侧填充,它会被正确隐藏,但是填充消失了......

谢谢,提前。

Codepen 格式错误:https://codepen.io/moptopop/pen/RwbVMLv,其中在添加左侧填充时似乎无法显示效果。 (请稍微滚动以单击应该触发问题面板的黄色矩形。抱歉,我无法重新添加图像,但这不应该影响问题。)

【问题讨论】:

  • 您是否只是想让一个滑动面板在单击按钮时从左侧滑出并带有一些填充?
  • 是什么阻止您在所有面板内容周围使用内部包装器并为该包装器提供所需的填充? Example.
  • 是的,克里斯。没错。
  • 更新了上面的笔。你不应该改变width(因为当你为它设置动画时,你会得到“压扁”的内容。你应该为transform设置动画。查看更新的示例(与上面相同的链接)。
  • 先生。 Gheorghiu,你的笔帮我解决了!只好把图片缩小一点。非常感谢您和其他所有人的帮助!!!

标签: javascript html css svg


【解决方案1】:

您有两个选择 - 要么在菜单“隐藏”时删除左填充,然后在“显示”时恢复它 - 或者在面板“隐藏”时将 max width:0; overflow:hidden 应用于面板。

另外 - 在 CSS 中添加/删除具有样式的类比通过 javascript 直接将 css 添加到元素更好。

请注意,以下代码仅涉及宽度/填充/可见性,而不是侧面过渡等。

//js
function openPanelTableA() {
   document.getElementById("mySidePanelTableA").classList.remove("hide-panel")}

   function closePanelTableA() {
   document.getElementById("mySidePanelTableA").classList.add("hide-panel")}


//css
  #mySidePanelTableA {
   width: 250px;
   padding: 0px 0px 8px 0px;// or whatever padding you want   
  }

  #mySidePanelTableA.hide-panel {
   width: 0;
   max-width: 0;
   overflow: hidden; // this prevents the panel from being seen - even with the padding.
  }

【讨论】:

  • 我也会看看你的解决方案 -- 谢谢!
【解决方案2】:

对于关闭状态,您必须:

  • 给负左 = 宽度 + 填充
  • 给定padding = width = 0,然后为.open状态设置padding/width

这是一个代码 sn-p:

function openPanelTableA() {
  document
    .getElementById("mySidePanelTableA")
    .classList.add('open');
}

function closePanelTableA() {
  document
    .getElementById("mySidePanelTableA")
    .classList.remove('open');
}
html, body {
  padding: 0;
}

.sidePanelTableA {
  box-sizing: border-box;
  height: 80%;
  position: fixed; 
  top: 0;
  left: 0;
  background-color: red;
  overflow-x: hidden;


  width: 0;
  padding: 0;
  transition: all ease 0.5s;
}

.sidePanelTableA.open {
  width: 150px;
  padding: 30px;
}

#mysidePanelTableA  {
  padding: 0px 0px 8px 20px;
}

.closebtn {
  color: blue;
  position: absolute;
  right: 25px;
  font-size: 36px;
  margin-left: 50px;
}
<div id="mySidePanelTableA" class="sidePanelTableA">
  <a
    href="javascript:void(0)" 
    class="closebtn" 
    onclick="closePanelTableA()"
  >
    &times;
  </a>
  <br /><br />
  TITLE
  <br /><br />
  <img src="tableA.jpeg" height="200px" />
</div>

<button onclick="openPanelTableA()">Open</button>

【讨论】:

  • 如果按钮可以是 SVG,这可能会起作用。如果是这样,它似乎很完美。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 2019-03-19
  • 2014-07-22
  • 2021-01-08
相关资源
最近更新 更多