【问题标题】:What should I do to round the edges on my search box?我应该怎么做才能使搜索框的边缘变圆?
【发布时间】:2025-12-31 07:40:12
【问题描述】:

我是一个新手程序员,所以请原谅我问了一个可能很愚蠢的问题。出于某种原因,我能够对搜索按钮的边缘进行圆角处理,但无法成功地对搜索栏的边缘进行圆角处理。

click here to see image of navbar im working with

Navbar.jsx

import React from 'react';
import 'bootstrap/dist/css/bootstrap.min.css';
import * as ReactBootStrap from 'react-bootstrap';
import { CgSearch } from 'react-icons/cg';
import { BsFillPersonFill } from 'react-icons/bs';
import { FiMail } from 'react-icons/fi';
import { FaPlus } from 'react-icons/fa';
import { AiTwotoneBell } from 'react-icons/ai';
import './navbar.css';

function Navbar() {
  return (

    <section className="search-bar">
      <div className="row">
        <div className="col-lg mx-auto"> 

          <form>
            <div>
              <div className="input-group">
                <div className="homeBtn">
                <h3>VIZZEY</h3> 
                </div> 
              
                <input type="search" placeholder="Search" className="form-control" />
                <button className="searchBtn"><CgSearch /></button>
                <div className="input-group-append buttons">
                
                  
                  <div className="icon">
                    <button className="icon-btn">
                      <h4><FiMail /></h4>
                    </button>
                  </div>
                  <div className="icon">
                    <button className="icon-btn">
                      <h4><FaPlus /></h4>
                    </button>
                  </div>
                  <div className="icon">
                    <button className="icon-btn">
                      <h4><AiTwotoneBell /></h4>
                    </button>
                  </div>
                  <div className="icon">
                    <button className="icon-btn">
                      <h4><BsFillPersonFill /></h4>
                    </button>
                  </div>
                
                </div>
              </div>
            </div>
          </form>
        </div>
      </div>
    </section>
  )
}
export default Navbar;

导航栏.css

.searchBtn {
    color: #fff;
    background-color: #00ff9d;
    height: 38px; 
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px; 
    width: 40px;   
    border: black; 
}    

form {
    padding-top: 10px;
}

.icon {
    /* border-radius: 20px;  */
    padding-right: 20px;
} 

.form-control {
border-top-left-radius: 10px;
background-color: rgb(196, 196, 196); 
border-color: rgb(133, 133, 133);  

} 

.form-control:focus-within {
    background-color: rgb(196, 196, 196); 
    border-color: rgb(133, 133, 133); 
    outline: none;  
 
}

.search-bar {
    width: auto; 
    border: solid  #1c1f29; 
    background-color: #1c1f29; 
    padding-bottom: 10px;
}

.icon-btn {
    height: 40px; 
    width: 40px; 
    border-radius: 5px; 
    background-color: #00ff9d;
    color: white; 
    outline-color: chocolate;
}

.homeBtn {
    padding-right: 60px; 
    padding-left: 50px; 
    color: #00ff9d;  
 
} 

.buttons {
    padding-left: 55px; 
    padding-right: 15px;
}

任何人都可以玩弄它,让左边的生活变成右边吗?我认为这就像在 CSS 中将“border-top-left-radius:5px”和“border-bottom-left-radius:5px”添加到“.form-control”一样简单,因为这是控制搜索的类酒吧。但这并没有改变任何东西。

还有... 如果您还可以将右侧按钮周围的边框移除,使其看起来像搜索按钮,则可以加分。

【问题讨论】:

    标签: css reactjs


    【解决方案1】:

    这是经过修改的repro on Stackblitz

    我只是通过在 icon-btn 类上添加 border: none; 来删除边框。对于输入,您必须使您的属性变得重要,如下所示:

    .my-input {
      border-top-left-radius: 5px !important;
      border-bottom-left-radius: 5px !important;
    }
    

    【讨论】:

    • 你就是炸弹。谢谢。
    • 不客气,伙计 :) 如果适合您,请随时将其作为已接受的答案进行检查;)
    【解决方案2】:

    很简单,只需将这一行添加到项目样式表中

    border-radius: 25px;
    

    如果你想在每个边框中使用不同的半径,这就是代码

    border-radius: 15px 50px 30px 5px;
    

    【讨论】:

      【解决方案3】:

      如果我理解正确,您需要添加类 rounded-left 。 所以你的输入变成:&lt;input type="search" placeholder="Search" className="form-control rounded-left" /&gt;

      https://getbootstrap.com/docs/4.0/utilities/borders/#border-radius

      边界半径

      向元素添加类以轻松圆角。

      您的代码中的纯 HTML/bootstrap 示例:

      .searchBtn {
          color: #fff;
          background-color: #00ff9d;
          height: 38px; 
          border-top-right-radius: 5px;
          border-bottom-right-radius: 5px; 
          width: 40px;   
          border: black; 
      }    
      
      form {
          padding-top: 10px;
      }
      
      .icon {
          /* border-radius: 20px;  */
          padding-right: 20px;
      } 
      
      .form-control {
      border-top-left-radius: 10px;
      background-color: rgb(196, 196, 196); 
      border-color: rgb(133, 133, 133);  
      
      } 
      
      .form-control:focus-within {
          background-color: rgb(196, 196, 196); 
          border-color: rgb(133, 133, 133); 
          outline: none;  
       
      }
      
      .search-bar {
          width: auto; 
          border: solid  #1c1f29; 
          background-color: #1c1f29; 
          padding-bottom: 10px;
      }
      
      .icon-btn {
          height: 40px; 
          width: 40px; 
          border-radius: 5px; 
          background-color: #00ff9d;
          color: white; 
          outline-color: chocolate;
      }
      
      .homeBtn {
          padding-right: 60px; 
          padding-left: 50px; 
          color: #00ff9d;  
       
      } 
      
      .buttons {
          padding-left: 55px; 
          padding-right: 15px;
      }
      <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet"/>
      <section class="search-bar">
        <div class="row">
          <div class="col-lg mx-auto">
            <form>
              <div>
                <div class="input-group">
                  <div class="homeBtn">
                    <h3>VIZZEY</h3>
                  </div>
                  <input type="search" placeholder="Search" class="form-control rounded-left" />
                  <button class="searchBtn"><CgSearch /></button>
                  <div class="input-group-append buttons">
      
                    <div class="icon">
                      <button class="icon-btn">
                            <h4><FiMail /></h4>
                          </button>
                    </div>
                    <div class="icon">
                      <button class="icon-btn">
                            <h4><FaPlus /></h4>
                          </button>
                    </div>
                    <div class="icon">
                      <button class="icon-btn">
                            <h4><AiTwotoneBell /></h4>
                          </button>
                    </div>
                    <div class="icon">
                      <button class="icon-btn">
                            <h4><BsFillPersonFill /></h4>
                          </button>
                    </div>
      
                  </div>
                </div>
              </div>
            </form>
          </div>
        </div>
      </section>

      【讨论】: