【问题标题】:jQuery flip elements overlapping subsequent elementsjQuery翻转元素重叠后续元素
【发布时间】:2017-01-25 22:37:06
【问题描述】:

我正在使用jQuery flip plugin 在 node.js 中翻转 ejs 文件中的图像。

翻转动画有效,但翻转元素下方的任何元素都与翻转元素重叠。

说明我的问题的简单代码:

<head>
     <title>James Riley</title>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
    <script src="https://cdn.rawgit.com/nnattawat/flip/master/dist/jquery.flip.min.js"></script>
</head>
<body>

    <div>Something before the flip</div>
        <div id="flipImage">
            <div class="front">front content</div>
            <div class="back">back content</div>
        </div>
    <div>Something after the flip</div>

    <script type="text/javascript" src="scripts/about.js"></script>
</body>

然后在 about.js 中:

$("#flipImage").flip();

这会导致“翻转后的内容”与前/后内容重叠。如果内容是文本,它会直接覆盖后续文本。

对不起,如果这很明显。谢谢你的帮助!

【问题讨论】:

    标签: jquery html node.js ejs


    【解决方案1】:

    如果您查看源代码,它们将绝对定位前后元素。这可能有点hacky,但您可以在调用翻转函数时设置高度:

    var height =  $("#flipImage").outerHeight();
    $("#flipImage").flip().height(height);
    

    并将此样式添加到容器中:

    display:flex;
    justify-content: flex-start
    

    【讨论】:

      【解决方案2】:

      看起来这是插件的一个已知问题:

      “当我把它翻到后面,也就是长边栏时,它没有 展开容器以填充侧边栏。相反,它只是重叠 内容...”

      您可以关注github issue page.上的状态

      也许您会对 CSS 翻转技巧感兴趣? 这是来自David Walsh的一个很酷的例子

      /* simple */
      
      .flip-container {
        -webkit-perspective: 1000;
        -moz-perspective: 1000;
        -ms-perspective: 1000;
        perspective: 1000;
        -ms-transform: perspective(1000px);
        -moz-transform: perspective(1000px);
        -moz-transform-style: preserve-3d;
        -ms-transform-style: preserve-3d;
        border: 1px solid #ccc;
      }
      /*
      			.flip-container:hover .flipper, .flip-container.hover .flipper, #flip-toggle.flip .flipper {
      				-webkit-transform: rotateY(180deg);
      				-moz-transform: rotateY(180deg);
      				-ms-transform: rotateY(180deg);
      				transform: rotateY(180deg);
      				filter: FlipH;
          			-ms-filter: "FlipH";
      			}
      			*/
      
      /* START: Accommodating for IE */
      
      .flip-container:hover .back,
      .flip-container.hover .back {
        -webkit-transform: rotateY(0deg);
        -moz-transform: rotateY(0deg);
        -o-transform: rotateY(0deg);
        -ms-transform: rotateY(0deg);
        transform: rotateY(0deg);
      }
      .flip-container:hover .front,
      .flip-container.hover .front {
        -webkit-transform: rotateY(180deg);
        -moz-transform: rotateY(180deg);
        -o-transform: rotateY(180deg);
        transform: rotateY(180deg);
      }
      /* END: Accommodating for IE */
      
      .flip-container,
      .front,
      .back {
        width: 320px;
        height: 427px;
      }
      .flipper {
        -webkit-transition: 0.6s;
        -webkit-transform-style: preserve-3d;
        -ms-transition: 0.6s;
        -moz-transition: 0.6s;
        -moz-transform: perspective(1000px);
        -moz-transform-style: preserve-3d;
        -ms-transform-style: preserve-3d;
        transition: 0.6s;
        transform-style: preserve-3d;
        position: relative;
      }
      .front,
      .back {
        -webkit-backface-visibility: hidden;
        -moz-backface-visibility: hidden;
        -ms-backface-visibility: hidden;
        backface-visibility: hidden;
        -webkit-transition: 0.6s;
        -webkit-transform-style: preserve-3d;
        -webkit-transform: rotateY(0deg);
        -moz-transition: 0.6s;
        -moz-transform-style: preserve-3d;
        -moz-transform: rotateY(0deg);
        -o-transition: 0.6s;
        -o-transform-style: preserve-3d;
        -o-transform: rotateY(0deg);
        -ms-transition: 0.6s;
        -ms-transform-style: preserve-3d;
        -ms-transform: rotateY(0deg);
        transition: 0.6s;
        transform-style: preserve-3d;
        transform: rotateY(0deg);
        position: absolute;
        top: 0;
        left: 0;
      }
      .front {
        -webkit-transform: rotateY(0deg);
        -ms-transform: rotateY(0deg);
        background: lightgreen;
        z-index: 2;
      }
      .back {
        background: lightblue;
        -webkit-transform: rotateY(-180deg);
        -moz-transform: rotateY(-180deg);
        -o-transform: rotateY(-180deg);
        -ms-transform: rotateY(-180deg);
        transform: rotateY(-180deg);
      }
      .front .name {
        font-size: 2em;
        display: inline-block;
        background: rgba(33, 33, 33, 0.9);
        color: #f8f8f8;
        font-family: Courier;
        padding: 5px 10px;
        border-radius: 5px;
        bottom: 60px;
        left: 25%;
        position: absolute;
        text-shadow: 0.1em 0.1em 0.05em #333;
        display: none;
        -webkit-transform: rotate(-20deg);
        -moz-transform: rotate(-20deg);
        -ms-transform: rotate(-20deg);
        transform: rotate(-20deg);
      }
      .back-logo {
        position: absolute;
        top: 40px;
        left: 90px;
        width: 160px;
        height: 117px;
        background: url(logo.png) 0 0 no-repeat;
      }
      .back-title {
        font-weight: bold;
        color: #00304a;
        position: absolute;
        top: 180px;
        left: 0;
        right: 0;
        text-align: center;
        text-shadow: 0.1em 0.1em 0.05em #acd7e5;
        font-family: Courier;
        font-size: 22px;
      }
      .back p {
        position: absolute;
        bottom: 40px;
        left: 0;
        right: 0;
        text-align: center;
        padding: 0 20px;
        font-size: 18px;
      }
      /* vertical */
      
      .vertical.flip-container {
        position: relative;
      }
      .vertical .back {
        -webkit-transform: rotateX(180deg);
        -moz-transform: rotateX(180deg);
        -ms-transform: rotateX(180deg);
        transform: rotateX(180deg);
      }
      .vertical.flip-container .flipper {
        -webkit-transform-origin: 100% 213.5px;
        -moz-transform-origin: 100% 213.5px;
        -ms-transform-origin: 100% 213.5px;
        transform-origin: 100% 213.5px;
      }
      /*
      			.vertical.flip-container:hover .flipper {
      				-webkit-transform: rotateX(-180deg);
      				-moz-transform: rotateX(-180deg);
      				-ms-transform: rotateX(-180deg);
      				transform: rotateX(-180deg);
      			}
      			*/
      
      /* START: Accommodating for IE */
      
      .vertical.flip-container:hover .back,
      .vertical.flip-container.hover .back {
        -webkit-transform: rotateX(0deg);
        -moz-transform: rotateX(0deg);
        -o-transform: rotateX(0deg);
        -ms-transform: rotateX(0deg);
        transform: rotateX(0deg);
      }
      .vertical.flip-container:hover .front,
      .vertical.flip-container.hover .front {
        -webkit-transform: rotateX(180deg);
        -moz-transform: rotateX(180deg);
        -o-transform: rotateX(180deg);
        transform: rotateX(180deg);
      }
      /* END: Accommodating for IE */
      <p>Mouse over the image below to see it flip!</p>
      
      <h2>Styled Card (Horizontal Flip)</h2>
      <div class="flip-container" ontouchstart="this.classList.toggle('hover');">
        <div class="flipper">
          <div class="front" style="background: url(https://davidwalsh.name/demo/dwflip.jpg) 0 0 no-repeat;">
            <span class="name">David Walsh</span>
          </div>
          <div class="back" style="background:#f8f8f8;">
            <div class="back-logo"></div>
            <div class="back-title">@davidwalshblog</div>
            <p>Mozilla Web Developer, MooTools & jQuery Consultant, MooTools Core Developer, Javascript Fanatic, CSS Tinkerer, PHP Hacker, and web lover.</p>
          </div>
        </div>
      </div>
      <br />
      <br />
      
      <h2>Styled Card (Vertical Flip)</h2>
      <div class="flip-container vertical" ontouchstart="this.classList.toggle('hover');">
        <div class="flipper">
          <div class="front" style="background: url(https://davidwalsh.name/demo/dwflip.jpg) 0 0 no-repeat;">
            <span class="name">David Walsh</span>
          </div>
          <div class="back" style="background:#f8f8f8;">
            <div class="back-logo"></div>
            <div class="back-title">@davidwalshblog</div>
            <p>Mozilla Web Developer, MooTools & jQuery Consultant, MooTools Core Developer, Javascript Fanatic, CSS Tinkerer, PHP Hacker, and web lover.</p>
          </div>
        </div>
      </div>
      <br />
      <br />
      
      
      <h2>Toggle Flip (Horizontal)</h2>
      <div class="flip-container" id="flip-toggle">
        <div class="flipper">
          <div class="front" style="background: url(https://davidwalsh.name/demo/dwflip.jpg) 0 0 no-repeat;">
            <span class="name">David Walsh</span>
          </div>
          <div class="back" style="background:#f8f8f8;">
            <div class="back-logo"></div>
            <div class="back-title">@davidwalshblog</div>
            <p>Mozilla Web Developer, MooTools & jQuery Consultant, MooTools Core Developer, Javascript Fanatic, CSS Tinkerer, PHP Hacker, and web lover.</p>
          </div>
        </div>
      </div>
      <button onclick="document.querySelector('#flip-toggle').classList.toggle('hover');" class="sexyButton">Toggle Flip</button>
      <br />
      <br />
      
      <h2>Just The Basics (Horizontal Flip)</h2>
      <!-- card -->
      <div class="flip-container" ontouchstart="this.classList.toggle('hover');">
        <div class="flipper">
          <div class="front">
            front
          </div>
          <div class="back">
            back
          </div>
        </div>
      </div>
      <br />
      <br />

      【讨论】:

        猜你喜欢
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        相关资源
        最近更新 更多