RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-366032

Evgeniy Reva's questions

Martin Hope
Evgeniy Reva
Asked: 2022-10-06 02:36:40 +0000 UTC

将一个类组件变成一个功能性的 one - hooks, React

  • 0

我知道你需要 useEffect 钩子而不是 componentDidMount/componentWillUnmount,比如 Useffect(()=>{},[]) didMount, Useffect(()=>()=>{},[]) willUnmount。
我也需要useState,明天我会退订我自己理解的。
弹窗关闭时有滚动(弹窗打开时转义,弹窗打开时关闭弹窗点击空白处,提交表单),弹窗打开时没有滚动。

class Popup extends PureComponent {
    constructor(props) {
        super(props);

        this.handleSubmit = this.handleSubmit.bind(this);
        this.handleEscButtonClose = this.handleEscButtonClose.bind(this);
    }

    handleEscButtonClose(evt) {
        const { onActivePopupChange } = this.props;
        if (evt.keyCode === 27) {
            onActivePopupChange();
        }
    }

    handleSubmit(evt) {
        const {
            author,
            validAuthor,
            rating,
            comment,
            validComment,
            dignity,
            limitations,
            onSubmit,
            onActivePopupChange,
            onValidNameCheck,
            onValidCommentCheck,
        } = this.props;

        evt.preventDefault();

        if (!validAuthor || !author) {
            evt.preventDefault();
            onValidNameCheck(ValidStatus.INVALID);
            return;
        }

        if (!validComment || !comment) {
            evt.preventDefault();
            onValidCommentCheck(ValidStatus.INVALID);
            return;
        }

        onSubmit({
            id: randomNumber(),
            author,
            rating: Number(rating),
            comment,
            dignity,
            limitations,
            date: new Date().toUTCString(),
        });

        setItem(`author`, author);
        setItem(`rating`, Number(rating));
        setItem(`comment`, comment);
        setItem(`dignity`, dignity);
        setItem(`limitations`, limitations);
        setItem(`date`, new Date().toUTCString());

        onActivePopupChange();
    }

    componentDidMount() {
        disablePageScroll();
    }

    componentWillUnmount() {
        enablePageScroll();
    }

    render() {
        const {
            author,
            validAuthor,
            comment,
            validComment,
            onActivePopupChange,
            onRatingChange,
            onNameInput,
            onCommentInput,
            onDignityInput,
            onLimitationsInput,
        } = this.props;

        return <>
            <section className="popup" onKeyDown={this.handleEscButtonClose}>
                <h2 className="popup__title">Оставить отзыв</h2>
                <form action="#" className="popup-form review-form" onSubmit={this.handleSubmit}>
                    <div className="review-form__wrapper">
                        <div className="review-form__col">
                            <ul className="review-form__left-list">
                                <li className="review-form__left-item">
                                    {!validAuthor && <p className="review-form__text">Пожалуйста, заполните поле</p>}
                                    {!author && <label className="review-form__label" htmlFor="name">*</label>}
                                    <input className="review-form__input" id="name" type="text" name="name" placeholder="Имя" autoFocus
                                        onChange={(evt) => {
                                            onNameInput(evt);
                                        }}
                                    />
                                </li>
                                <li className="review-form__left-item">
                                    <input className="review-form__input" id="dignity" type="text" name="dignity" placeholder="Достоинства"
                                        onChange={(evt) => {
                                            onDignityInput(evt);
                                        }}
                                    />
                                </li>
                                <li className="review-form__left-item">
                                    <input className="review-form__input" id="limitations" type="text" name="limitations" placeholder="Недостатки"
                                        onChange={(evt) => {
                                            onLimitationsInput(evt);
                                        }}
                                    />
                                </li>
                            </ul>
                        </div>
                        <div className="review-form__col">
                            <div className="review-form__rating rating">
                                {stars.map((star,i) => {
                                    return <Fragment key={star+i}>
                                        <input className="rating__input" id={`star-${star}`} type="radio" name="rating" value={star}
                                            onChange={(evt) => {
                                                onRatingChange(evt);
                                            }}
                                        />
                                        <label className="rating__label" htmlFor={`star-${star}`}>Rating {star}</label>
                                    </Fragment>;
                                })}
                                <p className="rating__text">Оцените товар:</p>
                            </div>
                            <div className="review-form__comment">
                                {!validComment && <p className="review-form__text review-form__text--textarea">Пожалуйста, заполните поле</p>}
                                {!comment && <label className="review-form__label review-form__label--textarea" htmlFor="review-text">*</label>}
                                <textarea className="review-form__textarea" name="review-text" id="review-text" placeholder="Комментарий"
                                    onChange={(evt) => {
                                        onCommentInput(evt);
                                    }}
                                ></textarea>
                            </div>
                        </div>
                    </div>
                    <div className="review-form__submit">
                        <button className="review-form__button" type="submit">Оставить отзыв</button>
                    </div>
                    <div className="review-form__close">
                        <button className="review-form__button-close" type="button" onClick={(evt) => {
                            evt.preventDefault();
                            onActivePopupChange();
                        }}>
                            
                            <Cross className="review-form__close-icon" width="15" height="16" />

                        </button>
                    </div>
                </form>
            </section>
            <div className="popup__bg-layer" onClick={() => {
                onActivePopupChange();
            }}></div>
        </>;
    }
}
javascript
  • 1 个回答
  • 10 Views
Martin Hope
Evgeniy Reva
Asked: 2020-01-02 16:42:56 +0000 UTC

需要一个纯 CSS 滑块 + 控件(底部的按钮和侧面的箭头)

  • 1

我正在寻找这样的东西纯 CSS 滑块

我找到了一个类似的,现在我需要像照片中那样做: 1- 侧面的箭头,以便它们显示在所有幻灯片上(在 1 和 4 上,第四个消失) 2- 将它们更改为看起来像照片(我根本不知道如何搜索它们等。)我寻求帮助,我仍然觉得不好

	body {
  overflow: hidden;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
}
/* Slider wrapper*/
.css-slider-wrapper {
  display: block;
  background: #FFF;
  overflow: hidden;
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}
/* Slider */
.slider {
  width: 100%;
  height: 100%;
  background: red;
  position: absolute;
  left: 0;
  top: 0;
  opacity: 1;
  z-index: 0;
  display: flex;
  display: -webkit-flex;
  display: -ms-flexbox;
  flex-direction: row;
  flex-wrap: wrap;
  -webkit-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
  justify-content: center;
  align-content: center;
  -webkit-transition: -webkit-transform 1600ms;
  transition: -webkit-transform 1600ms, transform 1600ms;
  -webkit-transform: scale(1);
  transform: scale(1);
}
/* each slide backgound color */  
.slide1 {
  background: #00bcd7;
  left: 0;
}
.slide2 {
  background: #009788;
  left: 100%
}
.slide3 {
  background: #ff5608;
  left: 200%
}
.slide4 {
  background: #607d8d;
  left: 300%;
}
.slider > div {
  text-align: center;
}
/* Slider inner slide effect */
.slider h2 {
  color: #FFF;
  font-weight: 900;
  text-transform: uppercase;
  font-size: 45px;
  line-height: 120%;
  opacity: 0;
  -webkit-transform: translateX(500px);
  transform: translateX(500px);
}
.slider .button {
  color: #FFF;
  padding: 5px 30px;
  background: rgba(255,255,255,0.3);
  text-decoration: none;
  opacity: 0;
  font-size: 15px;
  line-height: 30px;
  display: inline-block;
  -webkit-transform: translateX(-500px);
  transform: translateX(-500px);
}
.slider h2, .slider .button {
  -webkit-transition: opacity 800ms, -webkit-transform 800ms;
  transition: transform 800ms, opacity 800ms;
  -webkit-transition-delay: 1s; /* Safari */
  transition-delay: 1s;
}
/* Next and Preive arrow */ 
.control {
  position: absolute;
  top: 50%;
  width: 50px;
  height: 50px;
  margin-top: -25px;
  z-index: 55;
}
.control label {
  z-index: 0;
  display: none;
  text-align: center;
  line-height: 50px;
  font-size: 50px;
  color: #FFF;
  cursor: pointer;
  opacity: 0.2;
}
.control label:hover {
  opacity: 0.5;
}
.next {
  right: 1%;
}
.previous {
  left: 1%;
}
/* Slider Pagger */ 
.slider-pagination {
  position: absolute;
  bottom: 20px;
  width: 100%;
  left: 0;
  text-align: center;
  z-index: 1000;
}
.slider-pagination label {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  background: rgba(255,255,255,0.2);
  margin: 0 2px;
  border: solid 1px rgba(255,255,255,0.4);
  cursor: pointer;
}
/* Slider Pagger arrow event */
.slide-radio1:checked ~ .next .numb2, 
.slide-radio2:checked ~ .next .numb3, 
.slide-radio3:checked ~ .next .numb4, 
.slide-radio2:checked ~ .previous .numb1, 
.slide-radio3:checked ~ .previous .numb2, 
.slide-radio4:checked ~ .previous .numb3 {
  display: block;
  z-index: 1
}
/* Slider Pagger event */
.slide-radio1:checked ~ .slider-pagination .page1, 
.slide-radio2:checked ~ .slider-pagination .page2, 
.slide-radio3:checked ~ .slider-pagination .page3, 
.slide-radio4:checked ~ .slider-pagination .page4 {
  background: rgba(255,255,255,1)
}
/* Slider slide effect */
.slide-radio1:checked ~ .slider {
  -webkit-transform: translateX(0%);
  transform: translateX(0%);
}
.slide-radio2:checked ~ .slider {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
}
.slide-radio3:checked ~ .slider {
  -webkit-transform: translateX(-200%);
  transform: translateX(-200%);
}
.slide-radio4:checked ~ .slider {
  -webkit-transform: translateX(-300%);
  transform: translateX(-300%);
}
.slide-radio1:checked ~ .slide1 h2,  
.slide-radio2:checked ~ .slide2 h2,  
.slide-radio3:checked ~ .slide3 h2,  
.slide-radio4:checked ~ .slide4 h2,  
.slide-radio1:checked ~ .slide1 .button,  
.slide-radio2:checked ~ .slide2 .button,  
.slide-radio3:checked ~ .slide3 .button,  
.slide-radio4:checked ~ .slide4 .button {
  -webkit-transform: translateX(0);
  transform: translateX(0);
  opacity: 1
}

@media only screen and (max-width: 767px) {
.slider h2 {
  font-size: 20px;
}
.slider > div {
  padding: 0 2%
}
.control label {
  font-size: 35px;
}
.slider .button {
  padding: 0 15px;
}
}

	.clearfix:after {  content: "."; display:block; font-size:0; line-height:0; height:0; clear:both; visibility:hidden; }
	.clearfix { display:inline-block; }		
	* html .clearfix { height:1%; }
	.clearfix { display:block; }

	body {margin:0; background:#FFF url(../img/body.png); -webkit-text-size-adjust:100%; -moz-text-size-adjust:100%; padding:10px 2%; font:14px/24px 'Open Sans', Helvetica, Arial, sans-serif  ; color:#000;}	
	#wrapper { background:#FFF; width:1200px; margin:0 auto; border:solid 0px #E7E7E7; border-top:5px solid #0088cc; border-radius:6px; box-shadow:0 0 3px rgba(0,0,0,0.2), inset 0 4px 0 #ededed }
	#header { padding:30px 20px; border-bottom:solid 1px #e0e0e0; margin-bottom:20px; text-align:center; font-family:'Open Sans', sans-serif;}
	#logo { display:inline-block; font-weight:300;  margin:0 0 0px; font-size:30px; line-height:24px;  color:#000; text-decoration:none; position:relative;  }
	#logo span{ color:#0088cc;}
	
	section { padding:0 20px 20px}
	
    h2, h1{ font:300 22px/30px 'Open Sans', sans-serif;  margin:0 0 10px 0; padding:0}
    h1{ font-size:30px; line-height:40px; }
	h2 span{color:#0088cc;}
	.classname { display:block;  padding:20px;  border:solid 2px #CCC; text-align:center;}
    
    hr{ padding:0; margin:50px 0; height:1px; border:0; background:rgba(0,0,0,.2); box-shadow:0 1px 0 rgba(255,255,255, 0.8)  }
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>Pure css based fullscreen slider Demo</title>
<meta name="Description" content="Pure css based fullscreen slider Demo">
<link href="css.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
</head>
<body>
<div class="css-slider-wrapper">
  <input type="radio" name="slider" class="slide-radio1" checked id="slider_1">
  <input type="radio" name="slider" class="slide-radio2" id="slider_2">
  <input type="radio" name="slider" class="slide-radio3" id="slider_3">
  <input type="radio" name="slider" class="slide-radio4" id="slider_4">
  <div class="slider-pagination">
    <label for="slider_1" class="page1"></label>
    <label for="slider_2" class="page2"></label>
    <label for="slider_3" class="page3"></label>
    <label for="slider_4" class="page4"></label>
  </div>
  <div class="next control">
    <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-right"></i></label>
  </div>
  <div class="previous control">
    <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-left"></i></label>
  </div>
  <div class="slider slide1">
    <div>
      <h2>Css Based slider</h2>
       </div>
  </div>
  <div class="slider slide2">
    <div>
      <h2>CSS Slider without use of any javascript or jQuery</h2>
       </div>
  </div>
  <div class="slider slide3">
    <div>
      <h2>Full screen animation slider</h2>
      </div>
  </div>
  <div class="slider slide4">
    <div>
      <h2>css3 slider</h2>
       </div>
  </div>
</div>
</body>
</html>

css
  • 1 个回答
  • 10 Views
Martin Hope
Evgeniy Reva
Asked: 2020-12-31 07:41:56 +0000 UTC

使这个固定宽度的设计响应

  • 0

我会非常原谅帮助,我开始研究前面 - 并在这项任务上陷入了昏迷。借助对flex+float技术的理解,我需要通过媒体查询来完成以下任务:

“使用固定布局的附件。使用以下媒体查询创建响应式网页布局:非常小的设备(手机,小于 768 像素)(1 张图片)小型设备(平板电脑,768 像素或更多)(2 张图片)中型设备(台式机, 992px 及以上) 大型设备 (大型桌面, 1200px 及以上)"

* {
    box-sizing: border-box;
}

.page-wrap {
    width: 800px;
    margin: 20px auto;
}

.main-story {
    position: relative;
    margin: 0 0 25px 0;
}

img {
    display: block;
}

a {
    color: lightblue;
}

.story-intro {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    background: rgba(0, 0, 0, 0.75);
    padding: 20px;
    color: white;
}

h1 {
    font-size: 4em;
}
h1, h2 {
    margin: 0 0 10px 0;
}

.story-intro h1 {
    font-size: 2.5em;
}
.story-intro p {
    margin: 0;
}

.sub-stories {
    overflow: hidden;
    margin: 0 0 25px 0;
}

.sub-story {
    float: left;
    width: 250px;
    margin-right: 25px;
    position: relative;
    font-size: 80%;
}

.last {
    margin-right: 0;
}
 /* Медиа-запросы пробовал писать я сам :(
}
@media screen (max-width: 768px) {

   .story-intro, p, h1, img {
       width: 100vw;
       position: relative;
        }
    .sub-story {
        float: none;
        }
    }

 @media screen (min-width: 768px) and (max-width: 992px) {
 .page-wrap, .sub-stories{
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  width: 100%;
  height: auto;

}

.main-story, .sub-story:first-child, .sub-story:last-child,  .last, h1, h2, p{
    width: 50%;
    margin: 0;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
  }
}
  @media screen (min-width: 992px) and (max-width: 1200px) {

}
@media screen (min-width: 1200px) {

}
*/
<!-- This is a piece of code -->
<div class="page-wrap">

    <h1>Make This Responsive</h1>

    <p>While maintaining the heirarchy of importance.</p>

    <article class="main-story">

        <img src="http://f.cl.ly/items/2e3c2a1Z0D1H3u0W2K12/shera.jpg" alt="Sha Ra Rocking"/>

        <div class="story-intro">
            <h1>Most Important Story</h1>
            <p>This article has the most visual weight. <a href="http://nebezial.deviantart.com/art/she-ra-115867096">image source.</a></p>
        </div>

    </article>

    <section class="sub-stories">

        <article class="sub-story">
            <img src="http://placekitten.com/250/350"/>
            <div class="story-intro">
                <h2>Less Important Story</h2>
                <p>This story has less visual weight.</p>
            </div>
        </article>

        <article class="sub-story">
            <img src="http://placecage.com/250/350"/>
            <div class="story-intro">
                <h2>Less Important Story</h2>
                <p>This story has less visual weight.</p>
            </div>
        </article>

        <article class="sub-story last">
            <img src="http://placebear.com/250/350"/>
            <div class="story-intro">
                <h2>Less Important Story</h2>
                <p>This story has less visual weight.</p>
            </div>
        </article>

    </section>

</div>
 

Ps 我将不胜感激并感谢任何帮助。我很善于接受批评,所以不要退缩。我做了我能做的一切(我试着自己写请求),我理解得很糟糕,我很困惑..但想知道的愿望并没有减少:)

flexbox
  • 2 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5