如何在移动视图中点击箭头时左右滚动内容?
How to scroll the content in the left and right direction on hitting an arrow in mobile view?
我有一个 fiddle,它的工作方式是当我在移动视图中使用它时,方框会水平滚动。
我为此使用的 CSS 代码是:
@media only screen and (max-width: 767px)
{
.product-all-contents
{
overflow-x: auto;
}
.product-contents .product{
min-width: 50.795%;
margin: 0 2%;
padding-top: 3.91%;
padding-left: 3.91%;
padding-right: 3.91%;
}
}
问题陈述:
我想知道我应该在 fiddle 中进行哪些更改,以便 当我在移动视图中点击箭头时(如下面的橙色箭头标记的屏幕截图所示) 内容向左移动,反之亦然。
我认为最好的解决方案是 jQuery、scrollLeft() 和 scrollRight(),但我不确定如何在 fiddle.
对于你的问题,你需要一些东西
- 设置两个按钮以在您的代码中设置侦听器
获取初始位置以便计算幻灯片
让 divMain = $('.product-all-contents')[0];
让 position = $(divMain).children().position().left;
const slideAmount = 150;
这 3 个变量将是代码的主要值
最后听幻灯片
$('#arrow-right').click(函数() {
$(divMain).animate({
向左滚动:位置 + slideAmount
}, 500);
位置 += slideAmount;
})
希望这对您有所帮助 :>
$(document).ready(function() {
let divMain = $('.product-all-contents')[0];
let position = $(divMain).children().position().left;
const slideAmount = 150;
$('#arrow-right').click(function() {
$(divMain).animate({
scrollLeft: position + slideAmount
}, 500);
position += slideAmount;
})
$('#arrow-left').click(function() {
$(divMain).animate({
scrollLeft: position - slideAmount
}, 500);
position -= slideAmount;
})
});
.product-all-contents {
background-color: #f0f0f0;
width: 70%;
margin: auto;
}
.product-contents {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.product-contents .product {
width: 10%;
text-align: center;
height: 150px;
padding-top: 1%;
padding-left: 1%;
padding-right: 1%;
border-style: solid;
border-width: 3px;
border-color: rgb(145, 147, 150);
background-color: white;
border-radius: 10px
}
.ipads {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.tvs {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.franchise-hub-text,
.cloud-based-text,
.business-analytics-text,
.tech-support-text,
.order-management-text,
.employee-management-text,
.white-label-text,
.brand-label-text,
.lead-tracking-text,
.custom-invoicing-text,
.goal-setting-text,
.customization-tools-text,
.royalty-calculator-text,
.email-marketing-text {
width: 50%;
}
div.goal-setting,
div.customization-tools,
div.custom-invoicing,
div.lead-tracking,
div.email-marketing,
div.royalty-calculator,
div.brand-control,
div.franchisehubtv,
div.cloudbasedtextipad,
div.business-analytics,
div.tech-support,
div.employee-management,
div.order-management,
div.white-label {
display: flex;
margin-left: 15%;
margin-right: 15%;
align-items: center;
background-color: #f0f0f0;
padding: 2%;
margin-bottom: 5%;
}
.product-quotes {
display: block;
padding: 20px 11px;
width: 90%;
color: #3b3b3d;
background: white;
border-radius: 2px;
line-height: 1.625;
font-family: 'Roboto';
font-weight: normal;
"
}
.arrow-down {
width: 0;
height: 0;
margin: auto;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
border-top: 40px solid #f0f0f0;
}
.white {
display: none;
}
@media only screen and (max-width: 767px) {
.product-all-contents {
overflow-x: auto;
}
.product-contents .product {
min-width: 50.795%;
margin: 0 2%;
padding-top: 3.91%;
padding-left: 3.91%;
padding-right: 3.91%;
}
}
@media only screen and (max-width: 767px) {
div.goal-setting,
div.customization-tools,
div.custom-invoicing,
div.lead-tracking,
div.email-marketing,
div.royalty-calculator,
div.brand-control,
div.franchisehubtv,
div.cloudbasedtextipad,
div.business-analytics,
div.tech-support,
div.employee-management,
div.order-management,
div.white-label {
display: inline-block !important;
}
}
@media only screen and (max-width: 767px) {
.franchise-hub-text,
.cloud-based-text,
.business-analytics-text,
.tech-support-text,
.order-management-text,
.employee-management-text,
.white-label-text,
.brand-control-text,
.lead-tracking-text,
.custom-invoicing-text,
.goal-setting-text,
.customization-tools-text,
.royalty-calculator-text,
.email-marketing-text {
width: 100%;
}
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Testing</title>
<link rel="stylesheet" href="sample.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="script/myscript.js"></script>
</head>
<body>
<div class="product-all-contents">
<div class="product-contents">
<div class="product" id="franchisehub">
<p style=" font-size: 15px; font-family: 'Roboto'; margin-left: 7%; margin-right: 7%; line-height: 1.2; margin-top: 20%;
color: rgb(58, 59, 60);">A</p>
</div>
<div class="product" id="cloudbasedmobile" style="background-color:#81bf44;">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 27%;
color:white;">Z</p>
</div>
<div class="product" id="businessanalytics">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 22%;
color: rgb(58, 59, 60);">B</p>
</div>
<div class="product" id="techsupport">
<p style=" font-size: 15px;
font-family: 'Roboto';
margin-right: 9%;
line-height: 1.2;
margin-left: 9%; margin-top: 22%;
color: rgb(58, 59, 60);">C</p>
</div>
<div class="product" id="ordermanagement">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 23%;
color: rgb(58, 59, 60);">D</p>
</div>
<div class="product" id="employeemanagement">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-left: 5%; margin-top: 27%;
color: rgb(58, 59, 60);">E</p>
</div>
<div class="product" id="whitelabel">
<p style="
font-size: 15px;
font-family: 'Roboto';
line-height:1.2;
margin-left: 14%;
margin-right: 14%; margin-top: 8%;
color: rgb(58, 59, 60);
">M</p>
</div>
</div>
<div class="product-contents">
<div class="product" id="brandcontrol">
<p style="
font-size: 15px;
font-family: 'Roboto';
margin-left: 8%;
line-height:1.2;
margin-right: 8%; margin-top: 20%;
color: rgb(58, 59, 60);
">F</p>
</div>
<div class="product" id="leadtracking">
<p style="
font-size: 15px;
font-family: 'Roboto';
line-height:1.2;
margin-left: 5%;
margin-right: 5%; margin-top: 26%;
color: rgb(58, 59, 60);
">G</p>
</div>
<div class="product" id="custominvoicing">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 24%;
color: rgb(58, 59, 60);">K</p>
</div>
<div class="product" id="goalsetting">
<p style="font-size: 15px;
font-family: 'Roboto';
margin-right: 13%;
margin-left: 13%;
line-height: 1.2; margin-top: 24%;
color: rgb(58, 59, 60);">H</p>
</div>
<div class="product" id="customizationtools">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 22%;
color: rgb(58, 59, 60);">I</p>
</div>
<div class="product" id="royaltycalculator">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-left: 5%; margin-top: 23%;
color: rgb(58, 59, 60);">J</p>
</div>
<div class="product" id="emailmarketing">
<p style="
font-size: 15px;
font-family: 'Roboto';
margin-left: 5%;
margin-right: 5%;
line-height:1.2; margin-top: 21%;
color: rgb(58, 59, 60);
">K</p>
</div>
</div>
</div>
<button id="arrow-left"><----</button>
<button id="arrow-right">----></button>
</body>
</html>
我有一个 fiddle,它的工作方式是当我在移动视图中使用它时,方框会水平滚动。
我为此使用的 CSS 代码是:
@media only screen and (max-width: 767px)
{
.product-all-contents
{
overflow-x: auto;
}
.product-contents .product{
min-width: 50.795%;
margin: 0 2%;
padding-top: 3.91%;
padding-left: 3.91%;
padding-right: 3.91%;
}
}
问题陈述:
我想知道我应该在 fiddle 中进行哪些更改,以便 当我在移动视图中点击箭头时(如下面的橙色箭头标记的屏幕截图所示) 内容向左移动,反之亦然。
我认为最好的解决方案是 jQuery、scrollLeft() 和 scrollRight(),但我不确定如何在 fiddle.
对于你的问题,你需要一些东西
- 设置两个按钮以在您的代码中设置侦听器
获取初始位置以便计算幻灯片
让 divMain = $('.product-all-contents')[0]; 让 position = $(divMain).children().position().left; const slideAmount = 150;
这 3 个变量将是代码的主要值
最后听幻灯片
$('#arrow-right').click(函数() { $(divMain).animate({ 向左滚动:位置 + slideAmount }, 500); 位置 += slideAmount; })
希望这对您有所帮助 :>
$(document).ready(function() {
let divMain = $('.product-all-contents')[0];
let position = $(divMain).children().position().left;
const slideAmount = 150;
$('#arrow-right').click(function() {
$(divMain).animate({
scrollLeft: position + slideAmount
}, 500);
position += slideAmount;
})
$('#arrow-left').click(function() {
$(divMain).animate({
scrollLeft: position - slideAmount
}, 500);
position -= slideAmount;
})
});
.product-all-contents {
background-color: #f0f0f0;
width: 70%;
margin: auto;
}
.product-contents {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.product-contents .product {
width: 10%;
text-align: center;
height: 150px;
padding-top: 1%;
padding-left: 1%;
padding-right: 1%;
border-style: solid;
border-width: 3px;
border-color: rgb(145, 147, 150);
background-color: white;
border-radius: 10px
}
.ipads {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.tvs {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem;
}
.franchise-hub-text,
.cloud-based-text,
.business-analytics-text,
.tech-support-text,
.order-management-text,
.employee-management-text,
.white-label-text,
.brand-label-text,
.lead-tracking-text,
.custom-invoicing-text,
.goal-setting-text,
.customization-tools-text,
.royalty-calculator-text,
.email-marketing-text {
width: 50%;
}
div.goal-setting,
div.customization-tools,
div.custom-invoicing,
div.lead-tracking,
div.email-marketing,
div.royalty-calculator,
div.brand-control,
div.franchisehubtv,
div.cloudbasedtextipad,
div.business-analytics,
div.tech-support,
div.employee-management,
div.order-management,
div.white-label {
display: flex;
margin-left: 15%;
margin-right: 15%;
align-items: center;
background-color: #f0f0f0;
padding: 2%;
margin-bottom: 5%;
}
.product-quotes {
display: block;
padding: 20px 11px;
width: 90%;
color: #3b3b3d;
background: white;
border-radius: 2px;
line-height: 1.625;
font-family: 'Roboto';
font-weight: normal;
"
}
.arrow-down {
width: 0;
height: 0;
margin: auto;
border-left: 40px solid transparent;
border-right: 40px solid transparent;
border-top: 40px solid #f0f0f0;
}
.white {
display: none;
}
@media only screen and (max-width: 767px) {
.product-all-contents {
overflow-x: auto;
}
.product-contents .product {
min-width: 50.795%;
margin: 0 2%;
padding-top: 3.91%;
padding-left: 3.91%;
padding-right: 3.91%;
}
}
@media only screen and (max-width: 767px) {
div.goal-setting,
div.customization-tools,
div.custom-invoicing,
div.lead-tracking,
div.email-marketing,
div.royalty-calculator,
div.brand-control,
div.franchisehubtv,
div.cloudbasedtextipad,
div.business-analytics,
div.tech-support,
div.employee-management,
div.order-management,
div.white-label {
display: inline-block !important;
}
}
@media only screen and (max-width: 767px) {
.franchise-hub-text,
.cloud-based-text,
.business-analytics-text,
.tech-support-text,
.order-management-text,
.employee-management-text,
.white-label-text,
.brand-control-text,
.lead-tracking-text,
.custom-invoicing-text,
.goal-setting-text,
.customization-tools-text,
.royalty-calculator-text,
.email-marketing-text {
width: 100%;
}
}
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Testing</title>
<link rel="stylesheet" href="sample.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="script/myscript.js"></script>
</head>
<body>
<div class="product-all-contents">
<div class="product-contents">
<div class="product" id="franchisehub">
<p style=" font-size: 15px; font-family: 'Roboto'; margin-left: 7%; margin-right: 7%; line-height: 1.2; margin-top: 20%;
color: rgb(58, 59, 60);">A</p>
</div>
<div class="product" id="cloudbasedmobile" style="background-color:#81bf44;">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 27%;
color:white;">Z</p>
</div>
<div class="product" id="businessanalytics">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 22%;
color: rgb(58, 59, 60);">B</p>
</div>
<div class="product" id="techsupport">
<p style=" font-size: 15px;
font-family: 'Roboto';
margin-right: 9%;
line-height: 1.2;
margin-left: 9%; margin-top: 22%;
color: rgb(58, 59, 60);">C</p>
</div>
<div class="product" id="ordermanagement">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 23%;
color: rgb(58, 59, 60);">D</p>
</div>
<div class="product" id="employeemanagement">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-left: 5%; margin-top: 27%;
color: rgb(58, 59, 60);">E</p>
</div>
<div class="product" id="whitelabel">
<p style="
font-size: 15px;
font-family: 'Roboto';
line-height:1.2;
margin-left: 14%;
margin-right: 14%; margin-top: 8%;
color: rgb(58, 59, 60);
">M</p>
</div>
</div>
<div class="product-contents">
<div class="product" id="brandcontrol">
<p style="
font-size: 15px;
font-family: 'Roboto';
margin-left: 8%;
line-height:1.2;
margin-right: 8%; margin-top: 20%;
color: rgb(58, 59, 60);
">F</p>
</div>
<div class="product" id="leadtracking">
<p style="
font-size: 15px;
font-family: 'Roboto';
line-height:1.2;
margin-left: 5%;
margin-right: 5%; margin-top: 26%;
color: rgb(58, 59, 60);
">G</p>
</div>
<div class="product" id="custominvoicing">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 24%;
color: rgb(58, 59, 60);">K</p>
</div>
<div class="product" id="goalsetting">
<p style="font-size: 15px;
font-family: 'Roboto';
margin-right: 13%;
margin-left: 13%;
line-height: 1.2; margin-top: 24%;
color: rgb(58, 59, 60);">H</p>
</div>
<div class="product" id="customizationtools">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-top: 22%;
color: rgb(58, 59, 60);">I</p>
</div>
<div class="product" id="royaltycalculator">
<p style=" font-size: 15px;
font-family: 'Roboto';line-height:1.2; margin-left: 5%; margin-top: 23%;
color: rgb(58, 59, 60);">J</p>
</div>
<div class="product" id="emailmarketing">
<p style="
font-size: 15px;
font-family: 'Roboto';
margin-left: 5%;
margin-right: 5%;
line-height:1.2; margin-top: 21%;
color: rgb(58, 59, 60);
">K</p>
</div>
</div>
</div>
<button id="arrow-left"><----</button>
<button id="arrow-right">----></button>
</body>
</html>