提问人:programmerlearner 提问时间:10/16/2023 最后编辑:programmerlearner 更新时间:10/20/2023 访问量:61
UI 问题:边框半径、按钮功能、对齐方式和颜色理论实现、Enter_container半径
UI Issues: Border Radius, Button Functionality, Alignment, and Color Theory Implementation, Enter_container radius
问:
我想将边框对齐显示“Entrar”的位置,如果用户存在,“Entrar”按钮也需要登录。“Novo Aqui?”按钮不会重定向到另一个名为“Cadastro”的页面,看起来也不像一个按钮;当有人将鼠标悬停在它上面时,它只会改变字母的颜色。我希望它重定向到另一个页面,在本例中为“注册”,并在用户将鼠标悬停在其上时使用颜色理论更改颜色。
我试着把“Novo Aqui?”按钮向右对齐,但我迷路了,因为有太多的div和规则。在这个按钮上,我试图像按钮一样重定向到另一个页面,但它看起来仍然不像一个按钮;它显示为未格式化的重定向链接。我试图绕过右角边框,但我没有成功。我尝试使用!important,但没有成功。“Entrar”按钮的左侧没有圆角边框,只有右侧的边框,如果存在具有该电子邮件和密码的用户,它应该会登录。
我试着把“Novo Aqui?”按钮向右对齐,但我迷路了,因为有太多的div和规则。在这个按钮上,我试图像按钮一样重定向到另一个页面,但它看起来仍然不像一个按钮;它显示为未格式化的重定向链接。我试图绕过“enter_container”所在的右角边框,但我没有成功。我尝试使用!important,但没有成功。一切都是用葡萄牙语(pt-br)写的:“Entrar”与“Sign in”相同,“Novo Aqui?”与“New Here”相同。
import { useState } from 'react';
import { Link } from 'react-router-dom';
import styles from './Entrar.module.css';
const Entrar = () => {
const [dados, setDados] = useState({
email: '',
senha: '',
});
const [erro, setErro] = useState("");
const handleMudar = ({ currentTarget: input }) => {
setDados({ ...dados, [input.name]: input.value });
};
const handleEnviar = async (e) => {
e.preventDefault();
try {
const url = 'http://localhost:5555/autenticarRotas';
const { data: resultado } = await axios.post(url, dados);
localStorage.setItem('token', resultado.token);
window.location = "/";
} catch (erro) {
if (
erro.response && erro.response.status >= 400 &&
erro.response.status <= 500
) {
setErro(erro.response.data.message);
}
}
}
return (
<div className={styles.entrar_container}>
<div className={styles.entrar}>
<div className={styles.left}>
<form onSubmit={handleEnviar} className={styles.form}>
<h1>Entrar</h1>
<input
type="email"
placeholder="Email"
name='email'
onChange={handleMudar}
value={dados.email}
required
className={styles.input}
/>
<input
type="password"
placeholder="Senha"
name='senha' // Changed to 'senha' from 'password'
onChange={handleMudar}
value={dados.senha}
required
className={styles.input}
/>
{erro && <div className={styles.erro_msg}>{erro}</div>}
<div className={styles.button_container}>
<button type="submit" className={styles.entrar_btn}>
Entrar
</button>
</div>
<div className={styles.button_container}>
<button className={styles.novo_aqui_btn} onClick={() => navigate("/cadastrar")}>
Novo Aqui?
</button>
</div>
</form>
</div>
</div>
</div>
);
}
export default Entrar;
/* Create all the fields components that exist in the file Entrar.jsx */
/* General Styles */
.entrar_container {
width: 100%;
min-height: 100vh;
background-color: #f5f5f5;
display: flex;
align-items: center;
justify-content: center;
border-radius: 20px;
}
/* Left Side - Introduction */
.left {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-top-left-radius: 10px;
border-bottom-left-radius: 10px;
background: linear-gradient(to bottom, #3bb19b, #318994);
color: #fff;
padding: 30px;
}
.left h1 {
font-size: 3rem;
margin-top: 0;
text-align: center;
border-radius: 20px;
}
/* Right Side - Registration Form */
.right {
flex: 2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-top-left-radius: 10px;
/* Changed to top-left */
border-bottom-left-radius: 10px;
/* Changed to bottom-left */
background-color: #fff;
padding: 30px;
}
.right form {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
/* Input Styles */
.input {
outline: none;
border: 2px solid #ccc;
width: 100%;
padding: 15px;
border-radius: 10px;
margin: 10px 0;
font-size: 1.1rem;
}
.form input {
color: black;
}
/* Error Message Styles */
.erro_msg {
width: 100%;
padding: 15px;
margin: 10px 0;
font-size: 1rem;
background-color: #f34646;
color: #fff;
border-radius: 5px;
text-align: center;
}
.button_container {
display: flex;
justify-content: space-between;
align-items: center;
}
/* Button Styles */
.entrar_btn {
color: white;
background-color: #007bff;
border: none;
padding: 10px 20px;
cursor: pointer;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px; /* Rounded edges */
}
.entrar_btn:hover {
background-color: #0056b3;
}
.novo_aqui_btn {
color: white; /* Text color is white */
text-decoration: none;
transition: color 0.3s ease;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px; /* Rounded edges */
}
.novo_aqui_btn:hover {
color: #0056b3;
}
答:
0赞
Sean
10/16/2023
#1
我从你的问题中得到的是你想改变:hover上按钮的“边框半径”和“文本”
button {
color: white;
background: green;
border: 0;
padding: 10px 28px
}
button:hover span {
display: none
}
button:hover {
border-radius:0 10px 10px 0;
background: red
}
button:hover:before {
content: "Reply!";
color: black;
}
<button>
<span>
Button
</span>
</button>
评论
0赞
programmerlearner
10/16/2023
我想将按钮对齐显示“此处新建”的位置?在Enter按钮的右侧,这两个按钮看起来都像一个按钮,当有人将鼠标悬停在它上面时,它会将颜色更改为匹配的颜色。输入按钮已经改变了颜色,但它也必须改变颜色,因为只有当鼠标悬停在它上面时,它才看起来像一个按钮。实际上,这看起来不像“新建此处”按钮吗?因为如果你将鼠标悬停在它上面,它看起来像一个链接,它应该看起来像一个按钮。而且我必须让入口右侧的边缘变圆
0赞
Sean
10/16/2023
好吧,我知道英语不是你的第一语言。我建议列出你想用按钮从a到b做什么
0赞
programmerlearner
10/16/2023
1 - “enter_container”的圆角边缘。2 -“Entrar”按钮颜色应与配色方案协调,遵循色彩理论。3 - “Entrar”按钮的两侧应有圆角边缘。4 - “Novo Aqui?”按钮,放置在表单下方,应具有圆润的边缘,如“Entrar”按钮。5 - 单击“Novo Aqui”按钮时,应重定向到“地籍”页面,并具有与颜色理论相匹配的颜色的悬停效果。6 - 如果找到匹配的电子邮件和密码组合,“Entrar”按钮应登录用户。
0赞
programmerlearner
10/17/2023
我设法通过对div_container所在的边缘进行圆角来修复它,并且我能够将“New Here?”放在右侧。但现在就是这样。在 div 中,需要的是使用 border-radius 而不是 border-radius-top-right,即 Novo Aqui?我刚刚在按钮 <div className={styles.button_container} 之前删除了它>
0赞
programmerlearner
10/20/2023
#2
我修复了按钮更具体的UI问题,这里是下面的代码
Entrar.jsx
import { useEffect, useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import styles from './Entrar.module.css';
import axios from 'axios';
const Entrar = () => {
const navigate = useNavigate();
useEffect(() => {
const token = localStorage.getItem('token');
if (token) {
navigate('/');
}
}, [navigate]);
const [dados, setDados] = useState({
email: '',
senha: '',
});
const [erro, setErro] = useState("");
const handleMudar = ({ currentTarget: input }) => {
setDados({ ...dados, [input.name]: input.value });
};
const handleEnviar = async (e) => {
e.preventDefault();
try {
const url = 'http://localhost:5555/autenticar/';
const { data: resultado } = await axios.post(url, dados);
localStorage.setItem('token', resultado.token);
window.location = "/entrar/home";
} catch (erro) {
if (
erro.response && erro.response.status >= 400 &&
erro.response.status <= 500
) {
setErro(erro.response.data.message);
}
}
}
return (
<div className={styles.entrar_container}>
<div className={styles.entrar}>
<div className={styles.left}>
<form onSubmit={handleEnviar} className={styles.form}>
<h1>Entrar</h1>
<input
type="email"
placeholder="Email"
name='email'
onChange={handleMudar}
value={dados.email}
required
className={styles.input}
/>
<input
type="password"
placeholder="Senha"
name='senha' // Changed to 'senha' from 'password'
onChange={handleMudar}
value={dados.senha}
required
className={styles.input}
/>
{erro && <div className={styles.erro_msg}>{erro}</div>}
<div className={styles.button_container}>
<button type="submit" className={styles.entrar_btn}>
Entrar
</button>
<Link to="/entrar/cadastrar">
<button className={styles.novo_aqui_btn}>
Novo Aqui?
</button>
</Link>
</div>
</form>
</div>
</div>
</div>
);
}
export default Entrar;
Entrar.module.css
/* Create all the fields components that exist in the file Entrar.jsx */
/* General Styles */
.entrar_container {
width: 100%;
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
border-radius: 20px;
}
/* Left Side - Introduction */
.left {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-radius: 10px;
background: linear-gradient(to bottom, #3bb19b, #318994);
color: #fff;
padding: 30px;
}
.left h1 {
font-size: 3rem;
margin-top: 0;
text-align: center;
border-radius: 20px;
}
/* Right Side - Registration Form */
.right {
flex: 2;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
border-top-left-radius: 10px;
/* Changed to top-left */
border-bottom-left-radius: 10px;
/* Changed to bottom-left */
background-color: #fff;
padding: 30px;
}
.right form {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
/* Input Styles */
.input {
outline: none;
border: 2px solid #ccc;
width: 100%;
padding: 15px;
border-radius: 10px;
margin: 10px 0;
font-size: 1.1rem;
}
.form input {
color: black;
}
/* Error Message Styles */
.erro_msg {
width: 100%;
padding: 15px;
margin: 10px 0;
font-size: 1rem;
background-color: #f34646;
color: #fff;
border-radius: 5px;
text-align: center;
}
.button_container {
display: flex;
justify-content: space-between;
align-items: center;
}
div .entrar_btn {
border: none;
padding: 15px;
border-radius: 10px;
margin: 10px 0;
font-size: 1.1rem;
cursor: pointer;
background-color: #3bb19b;
}
.entrar_btn:hover {
background-color: rgb(51, 49, 47);
}
div .novo_aqui_btn {
background-color: #3bb19b;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 5px;
font-size: 1.1rem;
cursor: pointer;
transition: background-color 0.3s ease;
}
.novo_aqui_btn:hover {
background-color: rgb(51, 49, 47);
}
评论