react vue背景掛載機(jī)器問(wèn)題
問(wèn)題
項(xiàng)目當(dāng)中我們有的時(shí)候會(huì)遇到多個(gè)背景圖片在一個(gè)地方展示的問(wèn)題
當(dāng)時(shí)項(xiàng)目比較急沒(méi)有時(shí)間做工具函數(shù),被團(tuán)隊(duì)優(yōu)化以后有,時(shí)間進(jìn)行工具函數(shù)編寫(xiě)
技術(shù)
插槽 , 和 css 背景 這個(gè)還不是最終的狀態(tài) 背景定位還有兩個(gè)屬性
這個(gè)是react 方式實(shí)現(xiàn)的 vue 也可以的
子組件
// positioning:{left:{direction:"center"},right:{direction:"cneter"}
const BackgroundMounter = (props)=> {
const BackgroundMounter = props.backGround
let backGroundPost = ""
let backGroundMessage = ""
let backGroundSises = ""
if(BackgroundMounter && BackgroundMounter.length > 0){
BackgroundMounter.forEach((item,index) => {
if(index +1 !== BackgroundMounter.length ){
backGroundMessage += `url(${item.URL})` + "no-repeat " + ","
backGroundSises += item?.style?.width + " " + item.style.height + ","
backGroundPost += item.style.positioning.left.direction + " " + item.style.positioning.right.direction + ","
}else {
backGroundMessage += `url(${item.URL})` + "no-repeat "
backGroundSises += item?.style?.width + " " + item.style.height
backGroundPost += item.style.positioning.left.direction + " " + item.style.positioning.right.direction
}
});
}
return(<div style={{background:backGroundMessage,backgroundPosition:backGroundPost,backgroundSize:backGroundSises}}>
{props.children}
</div>)
}
export default BackgroundMounter父組件
backGround 注意點(diǎn) 塊級(jí)元素寬度寬度會(huì)隨著父組件的寬度進(jìn)行定義,所以要轉(zhuǎn)為 行內(nèi)元素阻止寬度繼承,但是一定不要把行內(nèi)元素轉(zhuǎn)化為塊級(jí)元素 w3c 規(guī)定
/* eslint-disable no-unused-expressions */
import React ,{ useEffect} from "react"
import {useState} from "react"
import { LockOutlined, UserOutlined } from '@ant-design/icons';
import { Button, Checkbox, Form, Input } from 'antd';
import logincss from './index.module.css'
import Store from "../../Redux/redux";
import { BrowserRouter, Route, Routes,Link,Outlet,useNavigate} from "react-router-dom"
import UseClass from "./className";
import BackgroundMounter from "./BackgroundMounter";
const Log = () => {
const usenavigate = useNavigate()
const backGround = [
{URL:"https://pic2.zhimg.com/v2-abee0fc1e685e6ecad60cd507a9cf6b5_b.jpg",style:{width:"100px",height:"100px",positioning:{left:{direction:"center"},right:{direction:"center"}}}
},
{URL:"https://pic2.zhimg.com/v2-abee0fc1e685e6ecad60cd507a9cf6b5_b.jpg",style:{width:"100px",height:"100px",positioning:{left:{direction:"center"},right:{direction:"bottom"}}}}
]
// userstate 功能進(jìn)行數(shù)據(jù)的綁定艦艇 兩個(gè)參數(shù) 第一個(gè)為數(shù)據(jù)第二個(gè)為函數(shù)形式的變化只有通過(guò)函數(shù)進(jìn)行改動(dòng)才能更新頁(yè)面的數(shù)據(jù)
let [[form],setform] = useState(Form.useForm())
const linitform = {
password:'123456',
username:'wangchangzhou'
}
const login = () => {
console.log("deng錄")
// eslint-disable-next-line react-hooks/rules-of-hooks
usenavigate('/home',{state:{login:true}})
Store.dispatch({type:'login',login:true})
}
const valueSet = ()=> {
const time = null
if(time){
clearTimeout(()=> {
})
}
setTimeout(()=> {
console.log("KKKKKKK")
})
}
const getValue = ()=> {
}
useEffect(()=> {
// console.log(useClass(logincss.login_bution,logincss.login_bution_BACK),"返回值")
},[])
const fundom = (value)=> {
if(value ==="取消") {
form.resetFields()
}else {
login()
// console.log(form.getFieldsValue());
// let value = form.getFieldsValue()
// console.log(linitform === value)
// // eslint-disable-next-line no-unused-expressions
// if(linitform.password == form.getFieldsValue().password && linitform.password == form.getFieldsValue().password ){
// login()
// }
}
}
return(
<>
{/* 背景掛載機(jī) */}
<BackgroundMounter backGround={backGround} >
<div style={{height:"400px",width:"400px"}}>測(cè)試</div>
</BackgroundMounter>
{/* <button className={UseClass(logincss.login_bution,logincss.login_bution_BACK)} onClick={getValue()}>1</button>
<button onClick={getValue()}>2jn kkkkkkkkk</button> */}
</>)
// return(
// <div className={logincss.log_box}>
// <Form
// form={form}
// className={logincss.log_box_from}
// name="normal_login"
// initialValues={{
// }}
// >
// <div>
// <span style={{fontSize:'20px',textShadow:'4px 4px 4px'}}>低代碼測(cè)試</span>
// <Form.Item
// className={logincss.log_box_item}
// name="username"
// label ='名稱'
// rules={[
// {
// required: true,
// message: 'Please input your Username!',
// },
// ]}
// >
// <Input prefix={<UserOutlined className="site-form-item-icon" />} placeholder="請(qǐng)輸入用戶名" />
// </Form.Item>
// <Form.Item
// className={logincss.log_box_item}
// name="password"
// label ='密碼'
// rules={[
// {
// required: true,
// message: '請(qǐng)輸入密碼',
// },
// ]}
// >
// <Input
// prefix={<LockOutlined className="site-form-item-icon" />}
// type="password"
// placeholder="請(qǐng)輸入密碼"
// />
// </Form.Item>
// {/* <Form.Item className={logincss.log_box_item}>
// <Form.Item name="remember" valuePropName="checked" noStyle>
// <Checkbox>Remember me</Checkbox>
// </Form.Item> */}
// {/*
// <a className="login-form-forgot" href="">
// 記住密碼
// </a>
// </Form.Item> */}
// <Form.Item className={logincss.log_box_item}>
// <Button onClick={()=>{ return fundom('登陸') }} type="primary" htmlType="submit" className="login-form-button">
// 登錄
// </Button>
// <Button onClick={()=>{ return fundom('取消') }} style={{marginLeft: '20px'}} type="primary" htmlType="submit" className="login-form-button">
// 取消
// </Button>
// </Form.Item>
// </div>
// </Form>
// <Outlet></Outlet>
// </div>
// )
}
export default Log總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
React注冊(cè)倒計(jì)時(shí)功能的實(shí)現(xiàn)
這篇文章主要介紹了React注冊(cè)倒計(jì)時(shí)功能的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
react中form.setFieldvalue數(shù)據(jù)回填時(shí) value和text不對(duì)應(yīng)的問(wèn)題及解決方法
這篇文章主要介紹了react中form.setFieldvalue數(shù)據(jù)回填時(shí) value和text不對(duì)應(yīng)的問(wèn)題及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07
ReactNative實(shí)現(xiàn)弧形拖動(dòng)條的代碼案例
本文介紹了ReactNative實(shí)現(xiàn)弧形拖動(dòng)條,本組件使用到了react-native-svg和PanResponder,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02
使用React18和WebSocket構(gòu)建實(shí)時(shí)通信功能詳解
WebSocket是一種在Web應(yīng)用中實(shí)現(xiàn)雙向通信的協(xié)議,它允許服務(wù)器主動(dòng)向客戶端推送數(shù)據(jù),而不需要客戶端發(fā)起請(qǐng)求,本文將探索如何在React?18應(yīng)用中使用WebSocket來(lái)實(shí)現(xiàn)實(shí)時(shí)通信,感興趣的可以了解下2024-01-01
實(shí)現(xiàn)React單頁(yè)應(yīng)用的方法詳解
今天我們來(lái)學(xué)習(xí)React是如何構(gòu)建起一個(gè)單頁(yè)應(yīng)用的,React作為目前最流行的前端框架之一,其受歡迎程度不容小覷,從這門框架上我們可以學(xué)到許多其他前端框架所缺失的東西,也是其創(chuàng)新性所在的地方,比如虛擬DOM、JSX等。下面一起來(lái)看看。2016-08-08
react component changing uncontrolled in
這篇文章主要為大家介紹了react component changing uncontrolled input報(bào)錯(cuò)解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

