【问题标题】:Allow child element expand beyond parent div's padding允许子元素扩展超出父 div 的填充
【发布时间】:2021-03-13 18:36:22
【问题描述】:

我的一个包装器 div 有它自己的填充,并且需要它用于组织布局。

但是,其中一个子组件需要完全穿过屏幕,所以基本上忽略它的父集的填充。

我怎样才能让这个子组件完全跨越它的父 div,而忽略为它设置的填充?

这是一个示例,其中包含一些关于我正在尝试做的进一步说明:

const App = () => {

  return (
    <div style={{ padding: 20, backgroundColor: 'red' }}>
      <h3>See the following blue background paragraph. I want it to go beyond the padding I set for the parent div</h3>

      <p style={{overflowX: 'scroll', whiteSpace: 'nowrap', backgroundColor: 'blue'}}>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  </p>
        <h3>Think of it this way: I still want it to scroll as needed, but, I want it to completely go across my parent div, surpassing the padding set on it.</h3>
    </div>
  )
}


ReactDOM.render(
    <App />,
    document.getElementById('app')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="app"></div>

【问题讨论】:

    标签: javascript html css reactjs


    【解决方案1】:

    您可以将&lt;p&gt; 设置为绝对元素。见下文:

    const App = () => {
    
      return (
        <div style={{ padding: 20, backgroundColor: 'red', position: 'relative' }}>
          <h3>See the following blue background paragraph. I want it to go beyond the padding I set for the parent div</h3>
    <div style={{ paddingBottom: 30}}><p style={{overflowX: 'scroll', whiteSpace: 'nowrap', backgroundColor: 'blue', position: 'absolute', left: 0, right: 0, margin: 'auto'}}>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
      </p>
    </div>  
            <h3>Think of it this way: I still want it to scroll as needed, but, I want it to completely go across my parent div, surpassing the padding set on it.</h3>
        </div>
      )
    }
    
    
    ReactDOM.render(
        <App />,
        document.getElementById('app')
    );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    <div id="app"></div>

    【讨论】:

    • 重要提示,如果您将p 设置为absolute,您必须使用您的包装器position: relative,这样就不会弄乱整个布局。如果您对此有任何问题,请发表评论。
    • 查看更新的 sn-p。由于p 现在是绝对的,它不会尊重来自父div 的填充。但是,如果您在绝对 p 周围添加另一个 div,您可以在那里应用填充。
    • 您是否应用了我在环绕p 元素的附加div 中包含的样式?如果你是内联的,那么 div 应该看起来像这样&lt;div style={{ paddingBottom: 30}}&gt;&lt;p style={{overflowX: 'scroll', whiteSpace: 'nowrap', backgroundColor: 'blue', position: 'absolute', left: 0, right: 0, margin: 'auto'}}&gt; &lt;/p&gt;&lt;/div&gt;
    • 我还更新了 sn-p 以使所有 CSS 内联。
    • @AibCodesDaily 我很高兴地通知您,问题实际上出在我的键盘和椅子之间;)还有我没有考虑到来自另一个 div 的额外填充。您的解决方案完美运行。非常感谢您的帮助
    【解决方案2】:

    你可以给它负边距等于你父母的填充,所以可能是这样的吗?

    const App = () => {
    
      return (
        <div style={{ padding: 20, backgroundColor: 'red' }}>
          <h3>See the following blue background paragraph. I want it to go beyond the padding I set for the parent div</h3>
    
          <p style={{overflowX: 'scroll', whiteSpace: 'nowrap', backgroundColor: 'blue', margin: -20}}>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
      </p>
            <h3>Think of it this way: I still want it to scroll as needed, but, I want it to completely go across my parent div, surpassing the padding set on it.</h3>
        </div>
      )
    }
    
    
    ReactDOM.render(
        <App />,
        document.getElementById('app')
    );
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    <div id="app"></div>

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2013-07-19
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多