#StackBounty: #html #css #scrollbar #chromium #web-component Stop a -webkit-scrollbar-track appearing on top of other content when over…

Bounty: 300

I have a set of styles that create a slim overlay scrollbar for Chromium/Webkit using -webkit-scrollbar-track (fallbacks in FX don’t have this issue), something like:

#wrapper {
  height: 125px;
  display: flex;
}

.slim-scroll {
    flex: 1;
    overflow-y: overlay !important;
    padding-right: calc(8px * 1.5);
}

    .slim-scroll::-webkit-scrollbar-track
    {
    }
        .slim-scroll:hover::-webkit-scrollbar-track { 
            -webkit-box-shadow: inset 0 0 8px rgba(0,0,0,0.3);
            box-shadow: inset 0 0 8px rgba(0,0,0,0.3);
            background: grey; 
        }

    .slim-scroll::-webkit-scrollbar
    {   
        height: 8px;
        width: 8px;
        background: none;
        -webkit-box-shadow: inset 0 0 8px rgba(0,0,0,0.1);
        box-shadow: inset 0 0 8px rgba(0,0,0,0.1);
    }

    .slim-scroll::-webkit-scrollbar-thumb
    {
        background: black;
    }
        .slim-scroll:hover::-webkit-scrollbar-thumb { background: red; }
<div id="wrapper">
  <div class="slim-scroll">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam tincidunt risus eros, non fermentum quam lacinia eu. In nec nibh ipsum. Nunc sollicitudin lectus sed leo euismod, sed tincidunt nunc eleifend. Nunc sed nunc felis. Nunc dolor metus, luctus in aliquet sit amet, congue sed lacus. Cras pellentesque nisl quis quam vehicula, eget fermentum metus luctus. Vestibulum eget arcu eget nisl volutpat tincidunt. Maecenas pharetra ex ex, sit amet eleifend leo hendrerit ac.

Nulla sed tristique quam. Aliquam quis nisi sit amet mi hendrerit eleifend a feugiat neque. Suspendisse tincidunt auctor dui, quis convallis eros bibendum in. Donec dui ex, sollicitudin quis tristique a, interdum nec nibh. Duis mattis, leo eget consectetur mollis, enim tellus imperdiet ante, eu viverra felis ante scelerisque velit. Integer sit amet tincidunt lectus. Nulla hendrerit lectus est, a mattis augue cursus et. Praesent sit amet nunc lorem. Etiam sollicitudin ut neque a ultrices. Phasellus vel nulla mauris. Donec malesuada porta dui. Praesent mi augue, laoreet nec consectetur nec, tincidunt in erat. Aliquam laoreet vel dolor et mattis. Fusce eu augue ut felis posuere auctor.
  </div>
</div>

However, in the wild this has a weird bug: sometimes, not always, the -webkit-scrollbar-track appears on top of other content.

In this screen shot there are two web components, both with shadow DOM and using the style for the scrollbar, but the one on the left appears correctly, while on the right the -webkit-scrollbar-track and -webkit-scrollbar-thumb are on top of the next panel:

image showing scroll appearing over subsequent content

I can’t reproduce this bug in a simple example – I don’t know what’s different between the two web components (or rather there are a huge number of differences, but I don’t know which one is causing this).

Update

Thanks @jolan for the idea that has helped me find the cause: switching from overflow-y: overlay to overflow-y: auto stops the scroll bar appearing on top of other content.

That only gets me part way there – this uses overlay specifically (rather than scroll or auto because I want to keep the horizontal layout of the content the same regardless of parent height, but I also don’t want to show a scrollbar when the content isn’t scrollable.

  • Is this a known bug with overlay? Can anyone point me to a blink/webkit issue?

  • Does anyone know why overlay does this and is there any way to resolve it without switching to auto or scroll?

  • Is there a CSS solution that doesn’t change the content width depending on vertical height? It would have to work in flex and grid contexts as well as explicit height/width.


Get this bounty!!!

#StackBounty: #css #ckeditor #ckeditor5 Sharing the common CSS rules of CK Editor for correct displaying of the formatted text outside …

Bounty: 50

Suppose we added the image in CKEdtitor and aligned it to right:

enter image description here

CKEditor will add image and image-style-align-right classes to figure element:

<p>Lorem ipsum of something like this&nbsp;</p>
<figure class="image image-style-align-right">
    <img src="https://XXXXX.com/116cc956-4cf4-4d2a-98cf-ffa69ab0eb3c.jpeg">
</figure>

Now we want the inputted HTML will be submitted by email? Above HTML must be submitted to the backend, then all styles must be converted to inline CSS. But how the backend will know about .image, .image-style-align-right and similar CSS rules?

There are below styles in theme/imagestyle.css file of @ckeditor/ckeditor5-image package:

/*
 * Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
 */

:root {
    --ck-image-style-spacing: 1.5em;
}

.ck-content {
    & .image-style-side {
        float: right;
        margin-left: var(--ck-image-style-spacing);
        max-width: 50%;
    }

    & .image-style-align-left {
        float: left;
        margin-right: var(--ck-image-style-spacing);
    }

    & .image-style-align-center {
        margin-left: auto;
        margin-right: auto;
    }

    & .image-style-align-right {
        float: right;
        margin-left: var(--ck-image-style-spacing);
    }
}

Problem 1: The source styles are in frontend and written by PostCSS

First, above code is PostCSS. Because I must not migrate to PostCSS just because using the CKEditor, I can not include this file to my source code written by other CSS preprocessor. In frontend, the Webpack compiles these styles an apply it dynamically when application starts (I mean, no file with compiled CSS available):

enter image description here

But how to bring up these styles to server?

Problem 2: How to bring up to server only these CSS classes which will be used and no more?

Well, even if I convert above .image-style-side , .image-style-align-center etc. to CSS and submit them to server, I will be enough only for Image feature. But the other CKEdtitor plugins adds other CCS classes and these classes are in numerous of other files!

–°onversely, there are a lot of CKEditor classes in which we are don’t need on backend, e. g. ck-editor__editable, ck-rounded-corners, ck-editor__editable_inline: there classes are for CKEditor’s GUI and will not require once editing will done?

Problem 3: The CSS variables

Above listing includes the CSS variables like --ck-image-style-spacing, --ck-image-style-spacing etc. To make inline CSS, server must know about them too.


Get this bounty!!!

#StackBounty: #javascript #html #css #webkit #chrome-ios Chrome on iPhone overflows content on empty page (on new tab only, not reload)

Bounty: 200

On IOS Chrome, the body overflows on a new tab or page with no content, but if the page is reloaded, the problem is fixed. It poses a problem for any element positioned at the bottom (absolute or fixed). Here is the code to reproduce the problem:

<!DOCTYPE html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width,minimum-scale=1, maximum-scale=2, initial-scale=1">
      <meta name="apple-mobile-web-app-capable" content="yes">
      <style>* {
         box-sizing: border-box;
         }
         html{
          height:100%;
         }
         body {
          height:100%;
          background-color:yellow;
          margin:0 0;
          border: 30px solid red;
         }
      </style>
   </head>
   <body></body>
</html>

The border should be shown all around the viewport but is being hidden behind the bottom Nav bar. Here is the result from the code above:

New page / tab on Mobile chrome

After page reload

Things I have tried (none of them worked):

I have tried for a week to find a workaround but to no avail. Any help would be greatly appreciated

Edit: My issue is different from HTML body not filling complete width on mobile devices as I don’t have an issue with filling the body, I have an overflowing body issue and mobile chrome behaving differently on a new page as opposed to an existing page. The workarounds on the page didn’t work for my issue

My question is the following: Can somebody find a way using css or JS for the HTML body to not overflow when a new page is opened using the code above?


Get this bounty!!!

#StackBounty: #html #css #fonts #font-awesome Font Awesome inline within single, portable HTML file

Bounty: 200

I have an HTML file that is supposed to be portable as in just an HTML file and nothing else. This means I usually inline all styles/scripts in their content and it works quite well. I usually link to CDN content if I want to keep HTML clean, but often for offline use, I embed everything. All CSS/All JS there is to include goes directly to header/footer/body.

I’ve done exactly the same thing for Font Awesome which is a bit problematic because except CSS file I needed to convert woff/woff2 font files that normally stay next to them into a binary representation.

This is how it normally looks:

@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url("../webfonts/fa-brands-400.eot");
  src: url("../webfonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.woff") format("woff"), url("../webfonts/fa-brands-400.ttf") format("truetype"), url("../webfonts/fa-brands-400.svg#fontawesome") format("svg"); }

.fab {
  font-family: 'Font Awesome 5 Brands';
  font-weight: 400; }
@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 400;
  font-display: block;
  src: url("../webfonts/fa-regular-400.eot");
  src: url("../webfonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.woff") format("woff"), url("../webfonts/fa-regular-400.ttf") format("truetype"), url("../webfonts/fa-regular-400.svg#fontawesome") format("svg"); }

.far {
  font-family: 'Font Awesome 5 Free';
  font-weight: 400; }
@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  font-display: block;
  src: url("../webfonts/fa-solid-900.eot");
  src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.woff") format("woff"), url("../webfonts/fa-solid-900.ttf") format("truetype"), url("../webfonts/fa-solid-900.svg#fontawesome") format("svg"); }

.fa,
.fas {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900; }

This is its binary representation (just a few lines as it’s quite large)

@font-face {
    font-family: 'Font Awesome 5 Free';
    font-style: normal;
    font-weight: 900;
    font-display: block;
    src: url("../webfonts/fa-solid-900.eot?");
    src: url("../webfonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAATmsAA0AAAADHuwAATlSAUuFYAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GYACZThEICor0YIjOQAE2AiQDnzALnzQABCAFiisH4i5bMnuSATLvp1Eyvq0KTDRu5CummzsFug2g5kWqjHSuhDve3Urk1BBxZf////+/72iIOaWzdbZjx

I’ve skipped including EOT/TTF/SVG (removed src for them) and simply replaced WOFF2/WOFF as that’s supposed to be enough for modern support.

And it is! It works. However only in one way.

<style>
    .login::before {
        font-family: "Font Awesome 5 Free";
        font-weight: 900;
        content: "f007";
    }

    .tps::before {
        font-family: "Font Awesome 5 Free";
        font-weight: 400;
        content: "f1ea";
    }

    .twitter::before {
        font-family: "Font Awesome 5 Brands";
        content: "f099";
    }
</style>
<span class="twitter"></span>

Above code works

<span class="fas fa-camera"></span>

Above code doesn’t work. This is how it looks (first 3 are using <style> approach):

enter image description here

If I switch to online using

<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" as="style" type="text/css" rel="stylesheet preload prefetch" />

It works both ways which leads me to think there is a difference between those 2 ways of using Font Awesome. I tried to build it in a 3rd way thinking I may just need to change how I define things but using something like this didn’t go well.

<span style='font-family: "Font Awesome 5 Brands"; content: "f099"; font-weight: 400;'></span>

When I checked the source of all.css the style just defines this:

.fa-twitter:before {
  content: "f099"; }

My 3 questions:

  1. What is the difference between methods using <style></style>, which basically wraps the same thing that all.css does already, and using class "fab fa-twitter"
  2. Any clue why it’s behaving differently for those 2?
  3. Any workaround?


Get this bounty!!!

#StackBounty: #css #reactjs #iphone #material-ui Device width and height in material-ui

Bounty: 50

I am trying to add the specific width and height of (Iphone 7 Plus) only. For the project I am using withStyles.

import { withStyles } from "@material-ui/core";

I tried using:

"@media (width: 414px) and (height: 628px)": {}

I tried "@media (device-width: 414px) and (device-height: 628px)": {}
Tried both examples and is not working. Does someone have any ideas how to do it? Thank you


Get this bounty!!!

#StackBounty: #javascript #html #css Javascript/CSS Animation displaying text information for a link

Bounty: 50

I am creating a CV website that includes my info about my research papers. And I wanted to create an animation where when you click on the button that says "Paper 1" an abstract info box pops-up and tells you the information for the paper.

Likewise when you click on "Paper 2" the abstract info box for that paper pops-up. I am sharing pictures below of what it would look like. I know this type of animation requires either CSS/Javascript. I am using a template of a sample website to create. Any ideas on how to actually do it? I appreciate your help.

                     <li>
                        <a href="javascript:void(0);" class="tm-gallery-link" data-filter="research_1">
                            <i class="fas fa-edit nav-icon"></i>
                             Paper 1
                        </a>
                    </li>


                        <figure class="effect-honey tm-gallery-item research1">
                            <p > This is a paragraph about my first research paper. Quisque tincidunt, sem rutrum euismod ornare, tortor arcu tempus lorem, accumsan suscipit mauris lorem at lorem. Praesent feugiat mi at tortor tincidunt, ac consequat ante cursus.</p>
                        </figure>

Clicking on Paper 1
enter image description here

Clicking on Paper 2
enter image description here


Get this bounty!!!

#StackBounty: #html #css #bootstrap-4 Hover on bootstrap card overlay

Bounty: 50

Just created an overlay on hover following a Youtube tutorial – but I adjusted some css to make it responsive.

I’d like to hear hear some reviews or suggestions where I can improve.

#Projects .card {
  position: relative;
  overflow: hidden;
}

#Projects .card:before {
  position: absolute;
  content: '';
  width: 80%;
  height: 220%;
  background:rgba(199, 0, 57, .9);
  top: -50%;
  left: -100%;
  z-index: 1;
  transform: rotate(20deg);
  transform-origin: center top 0;
  transition: .5s;
}

#Projects .card:hover:before {
  left: 10%;
}

#Projects .card .card-text {
  width: 100%;
  padding: 0 20px;
  position: absolute;
  top: -150%;
  color: #fff;
  left: 0;
  z-index: 2;
  transition: .5s;
}

#Projects .card:hover .card-text {
   top: 20%;
}


@media (max-width: 992px) {
  #Projects .card:hover .card-text {
    top: 15%;
 }

  #Projects  .card-text a {
    font-size: 11px;
  }

  #Projects .btn {
    padding: 5px 15px;
  }

  #Projects  .card-text h3 {
    font-size: 18px;
  }

  #Projects  .card-text h5 {
    font-size: 18px;
  }
  
  
}

@media (max-width: 575px) {


  #Projects .btn {
    padding: 5px 24px;
    font-size: 1.1rem;
  }

  #Projects  .card-text h3 {
    font-size: 1.5rem;
  }

  #Projects  .card-text h5 {
    font-size: 1.5rem;
  }
  

}
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
    integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous">

<section id="Projects">
  <div class="container">
    <div class="row">
      <div class="col-md-6 col-sm-6">
        <div class="card">
          <img class="card-img-top img-fluid" src="https://recruiterflow.com/blog/wp-content/uploads/2017/10/stackoverflow.png" alt="Card image cap">
          <div class="card-text">
            <h3>Project 1</h3>
            <h5>Some text...</h5>
            <a class="btn btn-primary" href="">View</a>
          </div>
        </div>

      </div>
      <div class="col-md-6 col-sm-6">
        <div class="card">
          <img class="card-img-top img-fluid" src="https://recruiterflow.com/blog/wp-content/uploads/2017/10/stackoverflow.png" alt="Card image cap">
          <div class="card-text">
            <h3>Project 2</h3>
            <h5>Some text...</h5>
            <a class="btn btn-primary" href="">View</a>
          </div>
        </div>
      </div>
    </div>
  </div>
 </section>


Get this bounty!!!

#StackBounty: #android #css #webview WebView not loading images nor css on some Android devices

Bounty: 100

I load html files on webview along with css applied using the following code:

@Override
protected void onCreate(Bundle savedInstanceState) {
     testWV = (WebView) findViewById(R.id.mywebview1);

     testWV.setDelegate(this);
     testWV.setApplicationLanguage(((iKitabApp) getApplication()).getLanguage());

     testWV.setVerticalScrollBarEnabled(false);
     testWV.setHorizontalScrollBarEnabled(false);
     testWV.getSettings().setSupportZoom(true);
     testWV.getSettings().setBuiltInZoomControls(true);
     testWV.getSettings().setDisplayZoomControls(false);

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         testWV.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
        );
     }
     testWV.getSettings().setJavaScriptEnabled(true);

}


new Thread(new Runnable() {
        @Override
        public void run() {
             testWV.post(new Runnable() {
                @Override
                public void run() {
                    
                    testWV.loadDataWithBaseURL(filePath,  htmlContent, "text/html", "UTF-8", "about:blank");
                }
            });
        }
});

Recently on some android devices as Galaxy 6 and note 10, the WebView is no longer loading the images in the WebView nor applying the css file which comes with it. While it’s still loading the whole content correctly on other android devices.

Kindly find below the result of the same html file on 2 different android devices

enter image description here
enter image description here

Would you kindly advise on the matter.


Get this bounty!!!

#StackBounty: #html #css #image #bootstrap-4 scale image on hover – unexpected behavior on mobile

Bounty: 50

I have an image i’d like to scale when hovering. My code works just fine on larger screen sizes, but on mobile, it is not working (image looks oddly scaled when I hover). I think it has to do with the image holder div, but when I try and set the max-width and height on mobile only, I still can’t get it to work. Any help appreciated! Thanks.

To replicate this issue – try viewing the following snippet in mobile, and hovering over the image (it will behave oddly):

.img-holder {
  max-width: 200px;
  max-height: 200px;
  overflow: hidden !important;
  border-radius: 50%;
  margin:0 auto
}

h4, p{
text-align:center
}

.bio-holder {
  padding-top:10px;
}

.img-fluid.d-block.mb-3.mx-auto.rounded-circle:hover{
        -webkit-transform: scale(1.1);
        -webkit-transition: all 0.125s ease-in-out 0s;
        -moz-transition: all 0.125s ease-in-out 0s;
        -ms-transition: all 0.125s ease-in-out 0s;
        -o-transition: all 0.125s ease-in-out 0s;
        transition: all 0.125s ease-in-out 0s;
    }
    
.bioName, .aboutHeading {
   color: #030b07;

}

.bioName {
   font-size: 35px;
}
<div class="col-6 col-md-4 p-4 staff-category"> 
  <div class="img-holder">
    <img class="img-fluid d-block mb-3 mx-auto rounded-circle" src="https://res.cloudinary.com/dxfq3iotg/image/upload/v1559454870/team-3.jpg" alt="Card image cap" width="200">
   </div>
   <div class="bio-holder">
    <h4 class="people_name"> <b class='bioNamePreview'>Ronald McDonald</b> </h4>
    <p class="mb-0">CEO and founder</p>
    </div>
</div>
            
            
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">


Get this bounty!!!

#StackBounty: #javascript #html #jquery #css Jquery custom scrollspy active nav item

Bounty: 50

I’m trying to make a custom scrollspy for a website.

When scroll down I want first of all make the nav fixed/sticky, that works perfectly. When scroll down further I try to make the current nav item active, by adding a class active.

But whatever I try I just can’t get that class active added to the nav item when we are at that specific section. I don’t get any errors whatsoever so I rerally don’t know anymore what I do wrong. I just can’t see it.

Is this perhaps the wrong approach or can someone see why it won’t get active?

$(function() {
  var $anchor = $('.product-menu');
  if ($anchor.length) {
    var $menuItems = $anchor.find('a'),
      $scrollItems = $menuItems.map(function() {
        var item = $($(this).attr("href"));
        if (item.length) {
          return item;
        }
      }),
      initPosition = $anchor.offset().top;
    $(window).scroll(function() {
      var htop = $('#header').outerHeight(true) - 1;
      if (initPosition != $anchor.offset().top && !$anchor.hasClass('sticky')) {
        initPosition = $anchor.offset().top;
      }
      if ($(window).scrollTop() >= initPosition - htop) {
        $anchor.addClass("sticky").css({
          top: htop
        });
      } else {
        $anchor.removeClass("sticky");
      }
      if ($anchor.length && $(window).width() > 768) {
        var cur = $scrollItems.map(function() {
          if ($(window).scrollTop() >= $(this).offset().top - $anchor.outerHeight() - $('#header').outerHeight()) return this;
        });
        cur = cur[cur.length - 1];
        var id = cur && cur.length ? cur[0].id : "";
        $menuItems.removeClass("active").end().filter("[href='#" + id + "']").addClass("active");
      }
    });
  }
});
#header {
  background: indianred;
  color: #fff;
  height: 60px;
  position: sticky;
  top: 0;
  z-index: 98;
  transition: all ease-in-out .25s;
  box-shadow: 0 5px 10px rgba(0,0,0,.05);
}

.product-menu {
  margin: 45px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  height:60px;
  line-height:60px;
  box-shadow: 0 5px 10px rgba(0,0,0,.05);
}

.product-menu.sticky {
  position: sticky;
  background: #fff;
  z-index: 9;
  width: 100%;
}

.list-inline {
  padding-left: 0;
  list-style: none;
  display: flex;
  flex-direction: row;
  align-items: center;
  margin: 0;
}

.list-inline li {
  margin: 0 5px;
}

.product-block {
  height: 300px;
  background: #eee;
  border: 1px solid #000;
}
<html>

<head>
  https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js
</head>

<body>
  <header id="header">
    <div class="header flex flex-align-center flex-between container">
      <div class="logo">
        <img src="" alt="Logo" width="" height="64" />
      </div>
    </div>
    <nav id="menu" class="nav list-inline">
      <ul class="list-inline container">
        <li><a href="#" class="goSmoothly">Main nav item</a></li>
        <li><a href="#" class="goSmoothly">Main nav item</a></li>
        <li><a href="#" class="goSmoothly">Main nav item</a></li>
        <li><a href="#" class="goSmoothly">Main nav item</a></li>
        <li><a href="#" class="goSmoothly">Main nav item</a></li>
      </ul>
    </nav>
  </header>
  <div class="some-container">
    <nav class="product-menu">
      <ul class="list-inline container">
        <li><a href="#description" class="goSmoothly">Product information</a></li>
        <li><a href="#specifications" class="goSmoothly">Specifications</a></li>
        <li><a href="#bundles" class="goSmoothly">Product bundles</a></li>
        <li><a href="#reviews" class="goSmoothly">Reviews</a></li>
        <li><a href="#related" class="goSmoothly">Related products</a></li>
      </ul>
    </nav>
    <div class="desc">
      <div id="description" class="product-block">description</div>
      <div id="specifications" class="product-block">specifications</div>
    </div>
    <div class="info">
      <div id="bundles" class="product-block">bundles</div>
      <div id="reviews" class="product-block">reviews</div>
    </div>
    <div id="related" class="product-block">related</div>
  </div>
</body>

</html>


Get this bounty!!!