Bootstrap Sub menu to stretch full screen and overlay the whole page - html

I've made a JSFiddle to illustrate what I have at the moment. Please view my code here:
Some of my CSS snippet code:
.subnav {
display: none;
position: absolute;
//top: 58px;
background: #dfe6e8;
padding: 24px;
-webkit-transition: all .5s ease;
-moz-transition: all .5s ease;
transition: all .5s ease;
}
.subnav li {
margin-right: 0px !important;
min-width: 142px;
}
.subnav li a {
padding-bottom: 0px !important;
margin-bottom: 16px;
}
.subnav li:last-child a {
margin-bottom: 0px;
}
.has-dropdown:hover .subnav {
display: block;
}
I'm having problem to make my UL to stretch fullscreen. Here's what I'm trying to achieve as below:
Any help would be appreciated

To achieve this you have to make few structural and css changes. I edited your fiddle and made some changes to the navigation.
Html:
<div class="nav-container">
<nav class="top-bar">
<div class="container-fluid">
<div class="row nav-menu">
<div class="col-xs-12 columns">
<a class="navbar-brand" href="index.html"><img alt="Logo" class="logo logo-light" src="img/logo-light.png"> <img alt="Logo" class="logo logo-dark" src="http://www.subcablenews.com/links/images2/telenor.gif"></a>
<ul class="menu navbar-right">
<li>
ABOUT
</li>
<li class="has-dropdown">
PROGRAMMES
<ul class="subnav">
<li>
Programme 1
</li>
<li>
Programme 2
</li>
<li>
Programme 3
</li>
<li>
Programme 4
</li>
</ul>
</li>
<li class="has-dropdown">
PROJECTS
<div class="subnav subnav-halfwidth fullwidth">
<div class="col-sm-4">
<h6 class="alt-font">Project Lists</h6>
<ul class="subnav subnav-halfwidth">
<li>
Project 1
</li>
<li>
Project 2
</li>
<li>
Project 3
</li>
<li>
Project 4
</li>
</ul>
</div>
<div class="col-sm-4">
<h6 class="alt-font">Project Lists 2</h6><img alt="Logo" class="logo" src="http://www.subcablenews.com/links/images2/telenor.gif"></div>
<div class="col-sm-4">
<h6 class="alt-font">Project Lists 2</h6><img alt="Logo" class="logo" src="http://www.subcablenews.com/links/images2/telenor.gif"></div>
</div>
</li>
<li class="has-dropdown">
MEDIA
<ul class="subnav">
<li>
Media 1
</li>
<li>
Media 2
</li>
<li>
Media 3
</li>
<li>
Media 4
</li>
</ul>
</li>
<li>
CONTACT
</li>
</ul>
<ul class="social-icons text-right">
<li>
<i class="icon social_twitter"></i>
</li>
<li>
<i class="icon social_facebook"></i>
</li>
<li>
<i class="icon social_instagram"></i>
</li>
</ul>
</div>
</div><!--end of row-->
<div class="mobile-toggle">
<i class="icon icon_menu"></i>
</div>
</div><!--end of container-->
</nav>
</div>
Extra Css:
.subnav.fullwidth{
position: absolute;
right: -15px;
top: 58px;
width: 100vw;
background: #F6F4F4;
padding: 48px 64px 48px;
box-shadow: inset 0 1px 0 #e2e3df, 0 3px 6px rgba(113,111,111,.7);
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-ms-transform: translateX(0);
-o-transform: translateX(0);
transform: translateX(0);
-webkit-transition: opacity .3s 0s, visibility 0s 0s;
-moz-transition: opacity .3s 0s, visibility 0s 0s;
transition: opacity .3s 0s, visibility 0s 0s;
/* box-shadow: 1px 2px 5px #7D7D7D; */
}
.row{margin:0}
.top-bar .logo {
width: 150px;
}
.subnav li{float:none; display: block;}
Here is Updated Fiddle. Make sure you check the html as well. Because I made some changes in that too.
Read this to get better understand about bootstrap navigation. Hope this helps you.

It's because the parent elements aren't at 100% width. You can override this by using width:100vw; on any element that you want to take up the full width. Also, try and remember next time to only include css on your fiddle that's relevant to the html at question. It's a lot to sort through for someone trying to help when you include your entire stylesheet.

Related

How to tilt hover in CSS

I try to stylize hover for the header.
It shows like this.
And I want to make it look like this:
Even when I tried skew, the text was also tilting with it.
Help will be appreciated.
Here is my code:
.hvr-link {
display: inline-block;
vertical-align: middle;
-webkit-transform: perspective(1px) translateZ(0);
transform: perspective(1px) translateZ(0);
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
position: relative;
-webkit-transition-property: color;
transition-property: color;
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
}
.hvr-link:before {
content: "";
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
right: 0;
background: #424141;
-webkit-transform: scaleY(0);
transform: scaleY(0);
-webkit-transform-origin: 50%;
transform-origin: 50%;
-webkit-transition-property: transform;
transition-property: transform;
-webkit-transition-duration: 0.3s;
transition-duration: 0.3s;
-webkit-transition-timing-function: ease-out;
transition-timing-function: ease-out;
}
.hvr-link:hover,
.hvr-link:focus,
.hvr-link:active {
color: white;
}
.hvr-link:hover:before,
.hvr-link:focus:before,
.hvr-link:active:before {
-webkit-transform: scaleY(1);
transform: scaleY(1);
}
<div class="col-md-7 col-sm-12">
<div class="nav-outer clearfix menu-bg">
<!--main-menu start-->
<nav class="main-menu">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
</div>
<div class="navbar-collapse collapse clearfix">
<ul class="navigation clearfix">
<li class="hvr_link"><a class="hvr-link" href="#top">Home</a>
</li>
<li><a class="hvr-link" href="#service">Services</a>
</li>
<li class="dropdown"><a class="hvr-link" href="#">About</a>
<ul>
<li><a class="hvr-link" href="#aboutmy">About</a></li>
<li><a class="hvr-link" href="#teammy">Team</a></li>
</ul>
</li>
<li><a class="hvr-link" href="#portfoliomy">Portfolio</a>
</li>
<li><a class="hvr-link2" href="#propertymy">Properties</a>
</li>
<li><a class="hvr-link2" href="#contactmy">Contact</a></li>
</ul>
</div>
<div class="clearfix"></div>
</nav>
<!--main-menu end-->
</div>
</div>
In this context, it can be a little bit tricky because you have to put the link text in a span element in order to be able to achieve this.
Check the snippet below, a quick explanation:
What transform: skewX(20deg); does to .menu li a is basically tilt the link as you require. The problem there is that that tilts the entire element, text included. That's why you use a span inside your link and apply a counter tilt to that span using transform: skewX(-20deg);. It's basically resulting in a final 0 degree tilt. The rest of the styles I added just to simulate your requirements.
Also, it's important that the a elements use inline-block if you're not using float or block if you're using float, otherwise they are not affected by the tilt. Same applies to the inner span element.
It would look something like this:
.menu {
display: flex;
flex-direction: row;
flex-wrap: wrap;
list-style: none;
background: #3d424a;
}
.menu li a {
color: #c3c5c7;
text-decoration: none;
display: inline-block;
transform: skewX(20deg);
font-family: Arial;
font-weight: bold;
text-transform: uppercase;
padding: 2rem;
transition: background 0.15s ease-in-out, color 0.15s ease-in-out;
}
.menu li a span {
transform: skewX(-20deg);
display: block;
}
.menu li a:hover {
background: #fda539;
color: #3d424a;
}
<ul class="menu">
<li>
<span>Home</span>
</li>
<li>
<span>About</span>
</li>
<li>
<span>Contact</span>
</li>
</ul>
you can hover and create images. I added in the text to show you how to unskew the text as well so it doesn't get messed up on hovering.
.navigation {
transform: skew(20deg);
width: 100px;
height: 20px;
}
ul {
list-style-type: none;
}
ul li a {
display: block;
transform: skew(-20deg);
text-align: center;
}
li:hover {
background: orange;
}
<div class="col-md-7 col-sm-12">
<div class="nav-outer clearfix menu-bg">
<!--main-menu start-->
<nav class="main-menu">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
</div>
<div class="navbar-collapse collapse clearfix">
<ul class="navigation clearfix">
<li class="hvr_link"><a class="hvr-link" href="#top">Home</a>
</li>
<li><a class="hvr-link" href="#service">Services</a>
</li>
<li class="dropdown"><a class="hvr-link" href="#">About</a>
<ul>
<li><a class="hvr-link" href="#aboutmy">About</a></li>
<li><a class="hvr-link" href="#teammy">Team</a></li>
</ul>
</li>
<li><a class="hvr-link" href="#portfoliomy">Portfolio</a>
</li>
<li><a class="hvr-link2" href="#propertymy">Properties</a>
</li>
<li><a class="hvr-link2" href="#contactmy">Contact</a></li>
</ul>
</div>
<div class="clearfix"></div>
</nav>
<!--main-menu end-->
</div>
</div>
#parallelogram {
width: 150px;
height: 100px;
transform: skew(20deg);
background: red;
}
https://css-tricks.com/the-shapes-of-css/#parallelogram-shape

Don't want recursive :after for my ul li dropdown menu

I'm stuck with this annoying problem. I have a nav in which there is a dropdown menu, composed by many <ul> in each <li>of the first <ul>
I have an :after effect for the main <ul>. It set a separator, but I don't want this separator in the <ul><li> of the <ul><li>.
Here is my code
nav ul li {
-webkit-transition: background-color .3s;
transition: background-color .3s;
float: left;
padding: 0;
transition:0.5s all;
position: relative;
display: block;
letter-spacing: -1px;
}
nav ul li:after {
height:60%;
content:'';
border-left: solid 1px rgba(255, 255, 255,0.3);
position: absolute;
transform: translateX(-50%) translateY(-50%);
left: 0px;
top: 50%;
transition:0.5s all;
-webkit-transition: 0.5s all;
}
nav ul li ul li:after {
content:none!important;
height:0%!important;
content:unset;
border-left: unset;
position: unset;
transform: unset;
left: unset;
top: unset;
}
<header id="header">
<nav>
<div class="bar">
<div class="brand-logo">
Paris Avenir</div>
<ul id="nav-normal" class="right">
<li>Aide/Tutos/Astuces<i class="fas fa-angle-down"></i>
<ul class="dropdown">
<li>J'arrive à Paris</li>
<li>Impositions</li>
<li>Fonctionnement de la mairie</li>
<li>PLU</li>
<li>Emploi/Formation</li>
</ul>
</li>
<li>Nos actions<i class="fas fa-angle-down"></i>
<ul class="dropdown">
<li>Décryptage des conseils municipaux</li>
<li>Étude des budgets</li>
<li>Actualités</li>
</ul></li>
<li><a id="search"><i class="fas fa-search"></i></a></li>
</ul>
</div>
</nav>
</header>
This seems so easy but it doens't work.
Thanks you,
Matthieu
You want to select only the ul with the id of nav-normal and use the child combinator CSS selector:
ul#nav-normal > li::after
You can read more about it here: https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator
Note that I've altered the styling of the ::after elements to make then more easily visible
nav ul li {
-webkit-transition: background-color .3s;
transition: background-color .3s;
float: left;
padding: 0;
transition: 0.5s all;
position: relative;
display: block;
letter-spacing: -1px;
}
ul#nav-normal>li::after {
content: '[:after content]';
color: red;
}
<header id="header">
<nav>
<div class="bar">
<div class="brand-logo">Paris Avenir</div>
<ul id="nav-normal" class="right">
<li>
Aide/Tutos/Astuces<i class="fas fa-angle-down"></i>
<ul class="dropdown">
<li>J'arrive à Paris</li>
<li>Impositions</li>
<li>Fonctionnement de la mairie</li>
<li>PLU</li>
<li>Emploi/Formation</li>
</ul>
</li>
<li>
Nos actions<i class="fas fa-angle-down"></i>
<ul class="dropdown">
<li>Décryptage des conseils municipaux</li>
<li>Étude des budgets</li>
<li>Actualités</li>
</ul>
</li>
<li><a id="search"><i class="fas fa-search"></i></a></li>
</ul>
</div>
</nav>
</header>

Making hover and active selectors the same

I have three images acting as tabs. Each image has a semi-transparent overlay of orange. When you hover over it, the orange opacity will be darker. When you click on the image, the active state should look the same as the hover state.
So I did this:
.overlay:hover:after, .job-seekers-nav li.active {
opacity: .8!important;
transition: 1s ease;
}
But when I ran my code, I am able to do the hover effect but when I click on a certain image, it would load the right content, and once I hover off the image, the image will revert back to the original semi-orange color and not the darker hovered orange.
html
<div class="row main-container job-seekers-nav">
<!--job seekers tab-->
<ul>
<li>
<div class="col-sm-4">
<a data-toggle="tab" href="#light-industrial">
<div class="overlay border-bottom-yellow">
<img src="img/light-industrial.jpg" class="img-responsive center-images">
</div>
</a>
</div>
</li>
<li>
<div class="col-sm-4">
<a data-toggle="tab" href="#general-warehousing">
<div class="overlay border-bottom-yellow">
<img src="img/general-warehousing.jpg" class="img-responsive center-images">
</div>
</a>
</div>
</li>
<li>
<div class="col-sm-4">
<a data-toggle="tab" href="#administrative-work">
<div class="overlay border-bottom-yellow">
<img src="img/administrative-work.jpg" class="img-responsive center-images"/>
</div>
</a>
</div>
</li>
</ul>
<!--end of job seekers tab-->
</div>
css
.job-seekers-nav ul {
padding: 0;
}
.job-seekers-nav li {
display: inline;
list-style: none;
}
.overlay {
display:inline-block;
position: relative;
}
.overlay:after {
content:'';
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 100%;
display: block;
position: absolute;
background: #f4511e;
opacity: 0.5;
}
.overlay:hover:after, .job-seekers-nav li.active {
opacity: .8!important;
transition: 1s ease;
}
.border-bottom-yellow {
border-bottom: 30px solid #fce565;
}
Try this:
.overlay:hover:after,
.job-seekers-nav li.active .overlay:after
{
opacity: .8!important;
transition: 1s ease;
}

Transition not aligning properly

I'm trying to make it so that you get an explanation of my project when you hover over the image. If I set the span.text-content position to absolute, all of my list items align properly, but i get one box in the upper left corner and I can't see it at all once I scroll to lower images.
When I set the position to relative, it separates all of my images and the text box appears on the left side and below the image, but at least I get one for every image. I've been playing with the z-index because, at first, you could only see the word "Explanation" as a sliver behind the top image.
Finally, my -o-transition won't gray out and I'm not sure what that's about? I've checked jshint and I'm not throwing any errors. Thanks in advance for the help!
HTML
<li>
<!--Dance Class-->
<img src="images/dance.jpg" id="port-img" width="797px" height="307px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--That's Not Food-->
<img src="images/tnf.png" id="port-img" width="797px" height="307px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--That's Not Food Pitch-->
<img src="images/tnf-pitch.png" id="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Coaches Corner-->
<img src="images/coach.jpg" id="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Singularity2045-->
<img src="images/Singularity2045.png" id="port-img" width="697px" height="733px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Overtime-->
<img src="images/overtime.png" id="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
</ul>
**CSS:**
span.text-content {
/* allows me to adjust the filters and transparency of the outer span/image */
background: rgba(0,0,0,0.5);
color: white;
cursor: pointer;
display: table;
font-size: 1.5em;
height: 300px;
left: 0;
position:absolute;
top: 0;
width: 500px;
opacity: 0;
-webkit-transition: opacity 500ms;
-moz-transition: opacity 500ms;
-o-transition: opacity 500ms;
transition: opacity 500ms;
z-index: 1;
}
span.text-content span {
/* For text alignment */
display: table-cell;
text-align: center;
vertical-align: middle;
}
ul.img-list li:hover span.text-content{
opacity: 1;
}
#port-img{
z-index: 1;
position: relative;
top: 69px
}
Codepen: http://codepen.io/anon/pen/wWPpQZ
HTML
<ul class="img-list">
<li>
<!--Dance Class-->
<img src="images/dance.jpg" class="port-img" width="797px" height="307px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--That's Not Food-->
<img src="images/tnf.png" class="port-img" width="797px" height="307px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--That's Not Food Pitch-->
<img src="images/tnf-pitch.png" class="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Coaches Corner-->
<img src="images/coach.jpg" class="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Singularity2045-->
<img src="images/Singularity2045.png" class="port-img" width="697px" height="733px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
<li>
<!--Overtime-->
<img src="images/overtime.png" class="port-img" width="697px" height="500px"/>
<span class="text-content"><span>Explanation</span></span>
</li>
</ul>
CSS
li {
position: relative;
display: inline-block;
}
.text-content {
background: rgba(0,0,0,0.5);
color: white;
cursor: pointer;
font-size: 1.5em;
position:absolute;
display: block;
top: 0;
right: 0;
bottom:0;
left: 0;
opacity: 0;
-webkit-transition: opacity 500ms;
-moz-transition: opacity 500ms;
-o-transition: opacity 500ms;
transition: opacity 500ms;
}
.text-content span {
display: block;
/* For text alignment */
position: absolute;
width: 100%;
top: 50%;
transform: translateY(-50%);
text-align: center;
}
.img-list li:hover .text-content{
opacity: 1;
}
.port-img{
display: block;
}
Explanation
Changed id="port-img" to class as you should not have multiple elements with same id.
Anyway the most important part is that li element have position relative so all child elements positioned absolutely are positioned to each li element.
Different way to position text verticaly is used as it was easier to make explanation box 100% height.

How can I close each dropdown straight away, without affecting my delay?

I have a little problem here with my css dropdown navigation.
When I hover over the first item, the dropdown appears, which is good. And it also has a delay when I mouse away from it, also good. This is fine as I move all the way across the top level.
However.
If I were to navigate backwards, last one, to second last one etc, I notice that the dropdowns are appearing behind the one that preceded it.
I am assuming that this is because of the order that they appear on my HTML.
Does anyone have any solutions for this? CSS or even jQuery is welcome.
I have supplied my code and jsfiddle.
Thanks all for your time!
EDIT: I just realised that my delay isn't ideal. I can mouse away from the subnav, and it stays for a few seconds, but when I mouse back into it again, it isn't clickable. Probably due to the pointer-events:none
JSFiddle: http://jsfiddle.net/4wLtmx9m/
#menu {
position: relative;
}
#navbar {
position: absolute;
margin: 0;
padding: 0;
z-index: 999;
width: 100%;
}
#navbar li {
list-style: none;
float: left;
width: 16.6%;
background-color: #F6F6F6;
text-align: center;
color:#9a9999;
/*background:url(../Assets/icons/nav-sprite-icons.png)0 20px;*/
}
#navbar li a {
display: block;
padding: 3px 8px;
text-transform: uppercase;
text-decoration: none;
color: #999;
font-weight: bold;
}
#navbar li a:hover {
color: #000;
}
#navbar li ul {
opacity:0;
top:0px;
position:absolute;
background-color:black;
z-index: -100;
left: 0;
width: 100%;
pointer-events:none;
-webkit-transition: all 0.2s ease 3s;
-moz-transition: all 0.2s ease-in-out;
-ms-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease 1s;
}
#navbar li ul li {
background-color:black;
color:white;
}
#navbar li ul li a {
color:white!important;
}
#navbar li:hover ul {
opacity:1;
background-color:black;
position: absolute;
display: inline;
top:22px;
left: 0;
width: 100%;
margin: 0;
padding: 0;
z-index:-100;
-webkit-transition: all 0.2s ease 0s;
/*animation: fadein 0.2s;
-webkit-animation: fadein 0.2s;
-moz-animation: fadein 0.2s;*/
pointer-events:auto;
}
#navbar * {
}
#-webkit-keyframes fadein {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
#navbar li:hover li, #navbar li.hover li {
float: left;
background-color:black;
}
#navbar li:hover li a, #navbar li.hover li a {
color: #FFF;
}
#navbar li li a:hover {
color: #357;
}
HTML
<div id="menu">
<ul id="navbar">
<li>Occasions
<ul>
<li>Valentine's Day
</li>
<li>Easter
</li>
<li>Mother's Day
</li>
<li>Father's Day
</li>
<li>Wedding
</li>
<li>Birthday
</li>
<li>Baby
</li>
</ul>
</li>
<li>Cards & Invitations
<ul>
<li>Invitations
</li>
<li>Baby
</li>
<li>Weddings
</li>
<li>Announcements
</li>
<li>Holiday
</li>
</ul>
</li>
<li>Canvas Prints
<ul>
<li>Full Wrap
</li>
<li>Colour Edge Wrap
</li>
<li>Frame
</li>
</ul>
</li>
<li>Mugs
<ul>
<li>11oz Single Image Mug
</li>
<li>11oz Double Image Mug
</li>
<li>11oz Scrapbook Mug
</li>
<li>11oz Fullwrap Mug
</li>
<li>14oz Travel Mug
</li>
<li>17oz Latte Mug
</li>
</ul>
</li>
<li>Device Cases
<ul>
<li>Smartphones
</li>
<li>Tablets
</li>
<li>iPods
</li>
</ul>
</li>
<li>Photo Gifts
<ul>
<li>Keychains
</li>
<li>Mousepads
</li>
<li>Playing Cards
</li>
<li>Puzzles
</li>
<li>T-Shirts
</li>
</ul>
</li>
</ul>
</div>
Rather than read and tweak your code, I wrote a working example with minimal CSS. Hope it helps.
#navbar {
white-space: nowrap;
}
#navbar li {
list-style: none;
position: relative;
display: inline-block;
margin: 0 1em 0 0;
padding: 0 0 1em;
}
#navbar li ul {
display: none;
padding: 0;
margin: .5em 0 0;
width: 10em;
position: absolute;
left: 0;
}
#navbar li li {
display: block;
margin: 0 0 .5em;
padding: 0;
}
#navbar>li:hover>ul {
display: block;
}
<ul id="navbar">
<li>
Occasions
<ul>
<li>
Valentine's Day
</li>
<li>
Easter
</li>
<li>
Mother's Day
</li>
<li>
Father's Day
</li>
<li>
Wedding
</li>
<li>
Birthday
</li>
<li>
Baby
</li>
</ul>
</li>
<li>
Cards & Invitations
<ul>
<li>
Invitations
</li>
<li>
Baby
</li>
<li>
Weddings
</li>
<li>
Announcements
</li>
<li>
Holiday
</li>
</ul>
</li>
<li>
Canvas Prints
<ul>
<li>
Full Wrap
</li>
<li>
Colour Edge Wrap
</li>
<li>
Frame
</li>
</ul>
</li>
<li>
Mugs
<ul>
<li>
11oz Single Image Mug
</li>
<li>
11oz Double Image Mug
</li>
<li>
11oz Scrapbook Mug
</li>
<li>
11oz Fullwrap Mug
</li>
<li>
14oz Travel Mug
</li>
<li>
17oz Latte Mug
</li>
</ul>
</li>
<li>
Device Cases
<ul>
<li>
Smartphones
</li>
<li>
Tablets
</li>
<li>
iPods
</li>
</ul>
</li>
<li>
Photo Gifts
<ul>
<li>
Keychains
</li>
<li>
Mousepads
</li>
<li>
Playing Cards
</li>
<li>
Puzzles
</li>
<li>
T-Shirts
</li>
</ul>
</li>
</ul>