.aplus-v2 .aplus-content-wrapper {
position: relative;
overflow: hidden;
}
.aplus-v2 .container-with-background-image {
width: 100%;
height: 100%;
background-repeat: no-repeat;
background-size: cover;
}
function logShoppableMetrics(moduleName, showsAddToCart) {
if (window.ue && window.ue.count) {
window.ue.count(“aplus:shoppable:” + moduleName + “:addToCart”, showsAddToCart ? 1 : 0);
}
}
From the brand
.aplus-v2 .apm-brand-story-carousel-container {
position: relative;
}
.aplus-v2 .apm-brand-story-carousel-hero-container,
.aplus-v2 .apm-brand-story-carousel-hero-container > div {
position: absolute;
width: 100%;
}
/*
Ensuring the carousel takes only the space it needs.
The sizes need to be set again on the absolutely positioned elements so they can take up space.
*/
.aplus-v2 .apm-brand-story-carousel-container,
.aplus-v2 .apm-brand-story-carousel-hero-container {
height: 625px;
width: 100%;
max-width: 1464px;
margin-left: auto;
margin-right: auto;
overflow: hidden;
}
.aplus-v2 .apm-brand-story-carousel-hero-container,
.aplus-v2 .apm-brand-story-carousel-hero-container > div {
height: 625px;
}
.aplus-v2 .apm-brand-story-carousel.a-carousel-container {
padding: 0px;
}
/*
This centers the carousel vertically on top of the hero image container and after the logo area (125px).
Margin-top = (heroHeight – cardHeight – logoAreaHeight) / 2 + logoAreaHeight
*/
.aplus-v2 .apm-brand-story-carousel .a-carousel-row-inner {
margin-top: 149px;
}
/*
Cards need to have a width set, otherwise they default to 50px or so.
All cards must have the same width. The carousel will resize itself so all cards take the width of the largest card.
The left margin is for leaving a space between each card.
*/
.aplus-v2 .apm-brand-story-carousel .a-carousel-card {
width: 362px;
margin-left: 30px !important;
}
/* styling the navigation buttons so they are taller, flush with the sides, and have a clean white background */
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left,
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right {
padding: 0px;
}
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image,
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image {
border: none;
margin: 0px;
}
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner,
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {
background: #fff;
padding: 20px 6px;
}
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner {
border-radius: 0px 4px 4px 0px;
}
.aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {
border-radius: 4px 0px 0px 4px;
}
-
Hamile is devoted to providing premium keyboard case that set the standard for quality and convenience.
- QUALITY We maintain the highest standards of quality in all aspects, from keyboards to our service.
- CONVENIENCE We prioritize ease of use and intuitive design to ensure that products are convenient and efficient for all users.
- CUSTOMER FOCUS We put our customers first, ensuring that products are designed to meet needs and exceed expectations.
-
Keyboard Case for Pro11 M5/M4
-
Keyboard Case for iPad Air11in
-
Keyboard Case for Air5/4th Gen
-
Keyboard Case for iPad Air13in
-
Keyboard Case for iPad Pro12.9
-
Keyboard Case for iPad A1610th
-
Keyboard Case for iPad A1610th
-
Keyboard Case for iPadA16 11in
-
Keyboard Case for iPad11th10th
-
Keyboard Case for iPad10th2022
-
Keyboard Case for iPad11th2025
-
Keyboard Case for iPad 10.2in
-
Keyboard Case for iPad 9/8/7th
-
Keyboard Case for iPad Air11in
-
Keyboard Case for Air5/4 Pro11
-
-
-
.aplus-v2 .aplus-content-wrapper {
position: relative;
overflow: hidden;
}
.aplus-v2 .container-with-background-image {
width: 100%;
height: 100%;
background-repeat: no-repeat;
background-size: cover;
}
function logShoppableMetrics(moduleName, showsAddToCart) {
if (window.ue && window.ue.count) {
window.ue.count(“aplus:shoppable:” + moduleName + “:addToCart”, showsAddToCart ? 1 : 0);
}
}
Product description
P.now(“premium-aplus-13-carousel-2”).execute(“init-pagination-carousel”, function(init) {
if (init) {
return;
}
P.register(“premium-aplus-13-carousel-2”, function() {
return function() {
P.when(“A”, “jQuery”, “a-carousel-framework”, “ready”).execute(“paginate-carousel”, function (A, $, framework) {
const ENTER_KEY_CODE = 13;
const ESCAPE_KEY_CODE = 27;
const LEFT_ARROW_KEY = 37;
const RIGHT_ARROW_KEY = 39;
const HOME_KEY = 36;
const END_KEY = 35;
var moduleId = “2”;
var carouselName = “premium-aplus-13-carousel-2”;
var paginationAction = “aplus-pagination-dot-action-” + moduleId + “-” + carouselName;
var paginationGroup = “#aplus-pagination-group-” + moduleId + “-” + carouselName;
/* If the carousel goes to a new page */
A.on(“a:carousel:”+carouselName+”:change:pageNumber”, function (data) {
A.$(paginationGroup+” .carousel-slider-circle”).removeClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘false’).attr(‘tabindex’, -1)
.eq(data.newValue – 1).addClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘true’).attr(‘tabindex’, 0);
});
function syncPaginationDotsWithCarouselPages(numPages) {
const parentElement = document.querySelector(paginationGroup);
if (parentElement && parentElement.children) {
const children = parentElement.children;
for (let i = 0; i = numPages) {
// If number of dots > num of pages, we should hide other dots
children[i].classList.add(‘aplus-pagination-dot–display-none’);
} else if (children[i].classList.contains(‘aplus-pagination-dot–display-none’)) {
// Reset display of dots if it was hidden before
children[i].classList.remove(‘aplus-pagination-dot–display-none’);
}
}
}
}
framework.onInit(carouselName, function (carousel) {
try {
var totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
/* Resize event handler to re-calculate the pagination dots count based on orientation */
window.addEventListener(‘resize’, function() {
carousel.resize();
totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
});
A.declarative(paginationAction, ‘click keydown’, function(event){
var isClick = event.type === ‘click’;
var isKeydown = event.type === ‘keydown’;
var isEnter = isKeydown && event.$event.keyCode === ENTER_KEY_CODE;
var isEsc = isKeydown && event.$event.keyCode === ESCAPE_KEY_CODE;
var isLeftArrow = isKeydown && event.$event.keyCode === LEFT_ARROW_KEY;
var isRightArrow = isKeydown && event.$event.keyCode === RIGHT_ARROW_KEY;
var isHome = isKeydown && event.$event.keyCode === HOME_KEY;
var isEnd = isKeydown && event.$event.keyCode === END_KEY;
if (isClick || isEnter) {
var data = event.data;
carousel.gotoPage(data.page);
} else if (isEsc) {
event.$target.blur();
} else if (isLeftArrow || isRightArrow || isHome || isEnd) {
event.$event.preventDefault();
const dots = A.$(paginationGroup + ” .carousel-slider-circle”);
const currentIndex = dots.index(event.$target);
let nextIndex;
if (isLeftArrow) {
nextIndex = currentIndex > 0 ? currentIndex – 1 : dots.length – 1;
} else if (isRightArrow) {
nextIndex = currentIndex < dots.length – 1 ? currentIndex + 1 : 0;
} else if (isHome) {
nextIndex = 0;
} else if (isEnd) {
nextIndex = dots.length – 1;
}
dots.eq(nextIndex).focus();
carousel.gotoPage(nextIndex + 1);
}
});
} catch (e) {
P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');
}
});
});
}
});
});
P.now(“premium-aplus-13-carousel-4”).execute(“init-pagination-carousel”, function(init) {
if (init) {
return;
}
P.register(“premium-aplus-13-carousel-4”, function() {
return function() {
P.when(“A”, “jQuery”, “a-carousel-framework”, “ready”).execute(“paginate-carousel”, function (A, $, framework) {
const ENTER_KEY_CODE = 13;
const ESCAPE_KEY_CODE = 27;
const LEFT_ARROW_KEY = 37;
const RIGHT_ARROW_KEY = 39;
const HOME_KEY = 36;
const END_KEY = 35;
var moduleId = “4”;
var carouselName = “premium-aplus-13-carousel-4”;
var paginationAction = “aplus-pagination-dot-action-” + moduleId + “-” + carouselName;
var paginationGroup = “#aplus-pagination-group-” + moduleId + “-” + carouselName;
/* If the carousel goes to a new page */
A.on(“a:carousel:”+carouselName+”:change:pageNumber”, function (data) {
A.$(paginationGroup+” .carousel-slider-circle”).removeClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘false’).attr(‘tabindex’, -1)
.eq(data.newValue – 1).addClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘true’).attr(‘tabindex’, 0);
});
function syncPaginationDotsWithCarouselPages(numPages) {
const parentElement = document.querySelector(paginationGroup);
if (parentElement && parentElement.children) {
const children = parentElement.children;
for (let i = 0; i = numPages) {
// If number of dots > num of pages, we should hide other dots
children[i].classList.add(‘aplus-pagination-dot–display-none’);
} else if (children[i].classList.contains(‘aplus-pagination-dot–display-none’)) {
// Reset display of dots if it was hidden before
children[i].classList.remove(‘aplus-pagination-dot–display-none’);
}
}
}
}
framework.onInit(carouselName, function (carousel) {
try {
var totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
/* Resize event handler to re-calculate the pagination dots count based on orientation */
window.addEventListener(‘resize’, function() {
carousel.resize();
totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
});
A.declarative(paginationAction, ‘click keydown’, function(event){
var isClick = event.type === ‘click’;
var isKeydown = event.type === ‘keydown’;
var isEnter = isKeydown && event.$event.keyCode === ENTER_KEY_CODE;
var isEsc = isKeydown && event.$event.keyCode === ESCAPE_KEY_CODE;
var isLeftArrow = isKeydown && event.$event.keyCode === LEFT_ARROW_KEY;
var isRightArrow = isKeydown && event.$event.keyCode === RIGHT_ARROW_KEY;
var isHome = isKeydown && event.$event.keyCode === HOME_KEY;
var isEnd = isKeydown && event.$event.keyCode === END_KEY;
if (isClick || isEnter) {
var data = event.data;
carousel.gotoPage(data.page);
} else if (isEsc) {
event.$target.blur();
} else if (isLeftArrow || isRightArrow || isHome || isEnd) {
event.$event.preventDefault();
const dots = A.$(paginationGroup + ” .carousel-slider-circle”);
const currentIndex = dots.index(event.$target);
let nextIndex;
if (isLeftArrow) {
nextIndex = currentIndex > 0 ? currentIndex – 1 : dots.length – 1;
} else if (isRightArrow) {
nextIndex = currentIndex < dots.length – 1 ? currentIndex + 1 : 0;
} else if (isHome) {
nextIndex = 0;
} else if (isEnd) {
nextIndex = dots.length – 1;
}
dots.eq(nextIndex).focus();
carousel.gotoPage(nextIndex + 1);
}
});
} catch (e) {
P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');
}
});
});
}
});
});
P.now(“premium-aplus-13-carousel-5”).execute(“init-pagination-carousel”, function(init) {
if (init) {
return;
}
P.register(“premium-aplus-13-carousel-5”, function() {
return function() {
P.when(“A”, “jQuery”, “a-carousel-framework”, “ready”).execute(“paginate-carousel”, function (A, $, framework) {
const ENTER_KEY_CODE = 13;
const ESCAPE_KEY_CODE = 27;
const LEFT_ARROW_KEY = 37;
const RIGHT_ARROW_KEY = 39;
const HOME_KEY = 36;
const END_KEY = 35;
var moduleId = “5”;
var carouselName = “premium-aplus-13-carousel-5”;
var paginationAction = “aplus-pagination-dot-action-” + moduleId + “-” + carouselName;
var paginationGroup = “#aplus-pagination-group-” + moduleId + “-” + carouselName;
/* If the carousel goes to a new page */
A.on(“a:carousel:”+carouselName+”:change:pageNumber”, function (data) {
A.$(paginationGroup+” .carousel-slider-circle”).removeClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘false’).attr(‘tabindex’, -1)
.eq(data.newValue – 1).addClass(“aplus-carousel-active”).attr(‘aria-selected’, ‘true’).attr(‘tabindex’, 0);
});
function syncPaginationDotsWithCarouselPages(numPages) {
const parentElement = document.querySelector(paginationGroup);
if (parentElement && parentElement.children) {
const children = parentElement.children;
for (let i = 0; i = numPages) {
// If number of dots > num of pages, we should hide other dots
children[i].classList.add(‘aplus-pagination-dot–display-none’);
} else if (children[i].classList.contains(‘aplus-pagination-dot–display-none’)) {
// Reset display of dots if it was hidden before
children[i].classList.remove(‘aplus-pagination-dot–display-none’);
}
}
}
}
framework.onInit(carouselName, function (carousel) {
try {
var totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
/* Resize event handler to re-calculate the pagination dots count based on orientation */
window.addEventListener(‘resize’, function() {
carousel.resize();
totalPages = carousel.getAttr(‘totalPages’);
syncPaginationDotsWithCarouselPages(totalPages);
});
A.declarative(paginationAction, ‘click keydown’, function(event){
var isClick = event.type === ‘click’;
var isKeydown = event.type === ‘keydown’;
var isEnter = isKeydown && event.$event.keyCode === ENTER_KEY_CODE;
var isEsc = isKeydown && event.$event.keyCode === ESCAPE_KEY_CODE;
var isLeftArrow = isKeydown && event.$event.keyCode === LEFT_ARROW_KEY;
var isRightArrow = isKeydown && event.$event.keyCode === RIGHT_ARROW_KEY;
var isHome = isKeydown && event.$event.keyCode === HOME_KEY;
var isEnd = isKeydown && event.$event.keyCode === END_KEY;
if (isClick || isEnter) {
var data = event.data;
carousel.gotoPage(data.page);
} else if (isEsc) {
event.$target.blur();
} else if (isLeftArrow || isRightArrow || isHome || isEnd) {
event.$event.preventDefault();
const dots = A.$(paginationGroup + ” .carousel-slider-circle”);
const currentIndex = dots.index(event.$target);
let nextIndex;
if (isLeftArrow) {
nextIndex = currentIndex > 0 ? currentIndex – 1 : dots.length – 1;
} else if (isRightArrow) {
nextIndex = currentIndex < dots.length – 1 ? currentIndex + 1 : 0;
} else if (isHome) {
nextIndex = 0;
} else if (isEnd) {
nextIndex = dots.length – 1;
}
dots.eq(nextIndex).focus();
carousel.gotoPage(nextIndex + 1);
}
});
} catch (e) {
P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');
}
});
});
}
});
});













Reviews
There are no reviews yet.