100

const cek = document.getElementById("fxd"),
      bbx = document.getElementById("box");
cek.addEventListener("change", () => {
  bbx.classList.toggle("fixed");
});
*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    padding: 0;
    margin: 0;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    background-color: #16202c;
}

.warpper {
    width: 500px;
    text-align: center;
}

.box {
    display: block;
    width: 100%;
    height: 250px;
    background-color: #223444;
    margin: 0 auto;
    transition: .6s easier;
}

.fixed {
    max-width: 350px;
    transition: .6s easier;
}

.chkb {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100vh;
}

.check {
    position: relative;
    width: 40px;
    height: 15px;
    background-color: #223444;
    outline: none;
    -webkit-appearance: none;
    border-radius: 20px;
    cursor: pointer;
    box-shadow: inset 0 0 5px rgba(0, 0, 0, .9);
    //*border: 1px solid #111923;*//
}

.check:checked {
    background-color: #1e69de;
}

.check:before {
    background-color: #0F121E;
    content: "";
    position: absolute;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    left: 0;
    top: 0;
    transform: scale(1.4);
    transition: .3s;
    box-shadow: 0 0 5px rgba(0, 0, 0, .6);
}

.check:checked:before {
    left: 22px;
    background-color: #1e69de;
}

.head {
    border: 1px solid #223444;
    padding: 10px 7px;
    display: flex;
    justify-content: space-between;
    margin-bottom: 5px;
    color: #1e69de;
}
<div class="chkb">
        <div class="warpper">
            <div class="head">
                <div class="">Change Width</div>
                <input type="checkbox" id="fxd" class="check" name="theme" >
                <!--<button type="button" class="btn">Change</button>-->
            </div>
            <div id="box" class="box"></div>
        </div>
    </div>

推荐答案

首先我想说的是,我喜欢你的设计!然后是任务.JS为localStorage对象提供了几个函数.例如,我们只需要setItemgetItem.

那么只有流动才是重要的.

  1. 加载页面时,在localstorage中判断"宽度"是否已设置.如果没有,什么都不要做.如果是,则切换元素.

  2. 一旦触发了click事件,请再次判断localStorage.如果尚未设置"宽度",请设置localStorage"宽度":true.否则将其设置为false.

就这样!

const cek = document.getElementById("fxd"),
      bbx = document.getElementById("box");

// check if localStorage . if yes set width
const checkWidthSet = localStorage.getItem('widthSet')

if (checkWidthSet === "true" ) {  
  bbx.classList.toggle("fixed");
}

cek.addEventListener("change", () => {
  const w = localStorage.getItem('widthSet');    
  if (w === "true") 
  {    
    localStorage.setItem('widthSet', false)      
  } else {        
    localStorage.setItem('widthSet', true)    
  }
  bbx.classList.toggle("fixed");  
});
*,
*::before,
*::after {
    box-sizing: border-box;
}

body {
    padding: 0;
    margin: 0;
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    background-color: #16202c;
}

.warpper {
    width: 500px;
    text-align: center;
}

.box {
    display: block;
    width: 100%;
    height: 250px;
    background-color: #223444;
    margin: 0 auto;
    transition: .6s easier;
}

.fixed {
    max-width: 350px;
    transition: .6s easier;
}

.chkb {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100vh;
}

.check {
    position: relative;
    width: 40px;
    height: 15px;
    background-color: #223444;
    outline: none;
    -webkit-appearance: none;
    border-radius: 20px;
    cursor: pointer;
    box-shadow: inset 0 0 5px rgba(0, 0, 0, .9);
    //*border: 1px solid #111923;*//
}

.check:checked {
    background-color: #1e69de;
}

.check:before {
    background-color: #0F121E;
    content: "";
    position: absolute;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    left: 0;
    top: 0;
    transform: scale(1.4);
    transition: .3s;
    box-shadow: 0 0 5px rgba(0, 0, 0, .6);
}

.check:checked:before {
    left: 22px;
    background-color: #1e69de;
}

.head {
    border: 1px solid #223444;
    padding: 10px 7px;
    display: flex;
    justify-content: space-between;
    margin-bottom: 5px;
    color: #1e69de;
}
<div class="chkb">
        <div class="warpper">
            <div class="head">
                <div class="">Change Width</div>
                <input type="checkbox" id="fxd" class="check" name="theme" >
                <!--<button type="button" class="btn">Change</button>-->
            </div>
            <div id="box" class="box"></div>
        </div>
    </div>

Javascript相关问答推荐

如何在基本计算器中添加不含eval的数学函数

如何将剧作家请求对象转换为字符串,因为它只提供promise ?

更改一组用户创建的项目的js排序标准

事件错误:类型错误:无法读取未定义的属性(读取stopPropagation)

在JavaScript中打开和关闭弹出窗口

在NextJS中使用计时器循环逐个打开手风琴项目?

创建1:1比例元素,以另一个元素为中心

D3 Scale在v6中工作,但在v7中不工作

WebRTC关闭navigator. getUserMedia正确

给定一个凸多边形作为一组边,如何根据到最近边的距离填充里面的区域

函数返回与输入对象具有相同键的对象

引用在HTMLAttributes<;HTMLDivElement>;中不可用

WebGL 2.0无符号整数输入变量

阿波罗返回的数据错误,但在网络判断器中是正确的

rxjs插入延迟数据

有条件重定向到移动子域

第二次更新文本输入字段后,Reaction崩溃

当用户点击保存按钮时,如何实现任务的更改?

如何更改Html元素S的 colored颜色 ,然后将其褪色为原始 colored颜色

React Refs不与高阶组件(HOC)中的动态生成组件一起工作