first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>详情页</title>
<style>
.photo img{
/* width: 100px; */
}
</style>
</head>
<body>
<div class="photo">
</div>
</body>
<script>
//调用接口
function getData() {
var xhr = new XMLHttpRequest();
xhr.open("GET", `http://127.0.0.1:3000/api/json/info?id=${total("id")}&quantity=${total("total")}`)
xhr.send()
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
//data 字符串类型的对象或数组传
var data = JSON.parse(xhr.response)//从response中取数据
rendList(data)
}
} else {
alert("当前网络不佳,请稍后重试!")
}
}
}
getData()
//渲染页面
function rendList(list) {
console.log("详情页数据:",list);
list.result.forEach(v => {
$(".photo").innerHTML +=`
<img src="${v}" alt="">
`
})
}
//地址栏取参数
function total(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
//console.log("a",total("id"));
function $(className) {
return document.querySelector(className);
}
function _(className) {
return document.querySelectorAll(className);
}
</script>
</html>

View File

@@ -0,0 +1,126 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>轮播图</title>
<link rel="stylesheet" href="http://at.alicdn.com/t/c/font_3889063_w9zrujr1cf.css">
<style>
* {
margin: 0;
padding: 0;
list-style: none;
border: 0;
}
.banner {
width: 560px;
height: 315px;
background: rgb(190, 165, 165);
margin: 0 auto;
overflow: hidden;
position: relative;
}
.banner .banner_ul {
display: flex;
position: absolute;
transition: all 1s;
}
.banner_ul li {
width: 560px;
height: 315px;
}
.banner_ul li img {
width: 560px;
height: 315px;
}
.button {
width: 100%;
position: absolute;
top: 50%;
transform: translateY(-50%);
display: flex;
justify-content: space-between;
font-size: 30px;
}
.button div {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 50px;
background: #00000061;
font-size: 20px;
color: #fff;
cursor: pointer;
}
.button div:last-child{
transform: rotate(-90deg);
}
.banner_dot {
position: absolute;
bottom: 5px;
left: 50%;
transform: translatey(-50%);
width: 100%;
display: flex;
}
.banner_dot i {
width: 13px;
height: 13px;
border-radius: 50%;
background: #fff;
margin-left: 5px;
cursor: pointer;
}
.banner_dot i:first-child {
margin-left: 0;
}
.banner_dot .active {
background: red;
}
</style>
</head>
<body>
<div class=" swiper banner">
<ul class="banner_ul" style="left: 0px">
<li><img src="https://img.alicdn.com/imgextra/i4/6000000001058/O1CN017HPzlT1Jgbr6Rvc4X_!!6000000001058-0-octopus.jpg"
alt=""></li>
<li><img src="https://img.alicdn.com/imgextra/i4/6000000003739/O1CN01ks7Fjr1dUVhwWXLWB_!!6000000003739-0-octopus.jpg"
alt=""></li>
<li><img src="https://img.alicdn.com/imgextra/i1/6000000003795/O1CN01g3s9jf1du9t00iRTU_!!6000000003795-0-octopus.jpg"
alt=""></li>
</ul>
<div class="button">
<div class="button_left iconfont icon-zhankai-copy"></div>
<div class="button_right iconfont icon-zhankai"></div>
</div>
<div class="banner_dot">
<!-- <i class="active"></i>
<i></i>
<i></i> -->
</div>
</div>
</body>
<script src="./swiper.js"></script>
<script>
// 第一个参数 是 最外层 父元素类名
//第二个是允许用户自定义插件的参数
var a = new Swiper(".banner",{
autoPlay: false,//是否自动播放
time:2000,//定时自动切换
initialSlide:0,//默认显示第几张
})
</script>
</html>

View File

@@ -0,0 +1,149 @@
// 哪些功能需要自定义?
// 是否需要自动播放
// 设置自动播放的时间间隔
// 可以设置默认显示第几张
// 如果不写html,就不需要对应的功能
// 可以js编程控制轮播图滚动到第几张
// 当轮播图滚动的时候要抛出当前下标
class Swiper {
//设置默认选项
defaultOption = {
TimeId: null,
autoPlay: false,
time: 100,
initialSlide: 0,
el: '.swiper',
on: {},
// length: () => {
// //获取li标签的长度
// console.log(this._f(".banner_ul li").length);
// return this._f(".banner_ul li").length
// }
length: () => this._f(`.swiper_wrap li`).length,
width: () => this.$f(``).offsetWidth,
initSlideLeft: () => {
this.$f(".swiper_wrap").style.left = `${this.defaultOption.initialSlide * -this.defaultOption.width()
}px`
}
}
constructor(el, option) {
if (el.length == 0 || this.$(el) == null) {
console.error(`类名:${el}不存在,请检查`);
} else {
this.defaultOption.el = el || this.defaultOption.el;
this.defaultOption.autoPlay = option.autoPlay || this.defaultOption.autoPlay;
this.defaultOption.time = option.time || this.defaultOption.time;
this.defaultOption.initialSlide = option.initialSlide || this.defaultOption.initialSlide;
if (option.hasOwnProperty("on")) {
this.defaultOption.on = option.on
}
this.init()
}
}
//构造函数里面调用类里面的方法
//程序调用
init() {
this.next()
this.prev()
this.sport()
this.click()
}
next() {
//var xxx = this; 保存this指向
//当前this属于next()
this.click(".button_right", (v, i) => {
//console.log(this);
//console.log(v,i);
this.sport(1)
})
}
prev() {
this.click(".button_left", (v, i) => {
//console.log(v,i);
this.sport(-1)
})
}
click(className, callback) {
//this._f(className).forEach((v,i) => v.onclick = () => callback(v,i))
//批量绑定点击事件
this._f(className).forEach((v, i) => {
v.onclick = () => {
// console.log("s");
//把数据回传出去 v,i
callback(v, i)
}
})
}
slideTo(index) {
this.changeActive(index)
}
//移动
sport(offset) {
//利用下标判断是第几张图
this.defaultOption.initialSlide += offset
if (this.defaultOption.initialSlide < 0) {
this.defaultOption.initialSlide = 0
}
if (this.defaultOption.initialSlide > this.defaultOption.length() - 1) {
this.defaultOption.initialSlide = this.defaultOption.length() - 1
}
if (this.defaultOption.initialSlide >= 0 && this.defaultOption.initialSlide <= this.defaultOption.length() - 1) {
this.changeActive(this.defaultOption.initialSlide)
}
}
//todo 图片添加了active 但是没有删掉上一次的active
changeActive(i) {
this.defaultOption.on.slideChange && this.defaultOption.on.slideChange(i)
if(this.$f(".banner_dot") != null){
this._f(".banner_dot i").forEach(val => {
val.classList.remove("active")
})
this._f(".banner_dot i")[i].classList.add("active")
}
// this.$f(".banner_dot").style.left = `${i * -this.defaultOption.width()}px`
// this._f(".banner_dot i").forEach(val => {
// console.log(this._f(".banner_dot i"));
// val.classList.remove("avtive")
// })
// this._f(".banner_dot i")[i].classList.add("active");
// console.log( this._(".banner_dot i")[i]);
}
renderOot(){
for (var i = 0; i<this.defaultOption.length(); i++ ){
this.$f(".banner_dot").innerHTML +=`
<li class="${i == this.defaultOption.initialSlide ? 'active' : ''}"></li>
`
}
this.click(".banner_dot i",(v,i) => this.changeActive(i))
}
$f(className) {
return this.$(`${this.defaultOption.el} ${className}`)
}
_f(className) {
return this._(`${this.defaultOption.el} ${className}`)
}
$(className) {
return document.querySelector(className);
}
_(className) {
return document.querySelectorAll(className);
}
}

View File

@@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>案例</title>
</head>
<body>
<ul></ul>
<button>下一页</button>
</body>
<script>
var page = 1;
//用于请求数据
function getData() {
var xhr = new XMLHttpRequest();
xhr.open("GET", `http://127.0.0.1:3000/api/json/mechanismList?id=82&page=${page}`)
xhr.send()
xhr.onreadystatechange = () => {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
//data 字符串类型的对象或数组传
var data = JSON.parse(xhr.response)//从response中取数据
rendList(data)
}
} else {
alert("当前网络不佳,请稍后重试!")
}
}
}
getData()
function rendList(list) {
// console.log(list.result.data);
//数据存放在result 中
console.log(list.result.data);
//console.log(data.status);
//console.log(xhr.response);
list.result.data.forEach((v => {
$("ul").innerHTML += `
<li>
<a href="./info.html?id=${v.id}&total=${v.total}">
<div class="title">${v.title}</div>
<img src="${v.preview}" alt="">
</a>
</li>
`
}))
}
$("button").onclick = () => {
page += 1
getData()
}
function $(className) {
return document.querySelector(className);
}
function _(className) {
return document.querySelectorAll(className);
}
</script>
</html>