Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS] nie działa css dla parenta
Forum PHP.pl > Forum > Przedszkole
shpaque
Witam, od razu dodam ze konsola nic nie zwraca- zawsze dzialalo - tutaj nie. Chodzi o to ze po nacisnieciu inputa (:focus) nie zmienia mi ustawien css formularza

  1. .search-home
  2. {
  3. position: relative;
  4. min-width: 300px;
  5. max-width: 92%;
  6. height: 60px;
  7. padding: 12px;
  8. margin: 13px 0 20px 0;
  9. border: solid 3px rgba(0, 0, 0, 0.15);
  10. border-radius: 50px;
  11. background: rgba(255, 255, 255, 0.25);
  12. color: black;
  13. overflow: hidden;
  14. }
  15.  
  16. .inputSearchHome
  17. {
  18. display: inline-block;
  19. float: left;
  20. width: 85%;
  21. padding: 5px 0 0 10px;
  22. font-family: "Open Sans";
  23. font-size: 15px;
  24. text-align: left;
  25. border: none;
  26. outline: none;
  27. background: transparent;
  28. color: #464646;
  29. }
  30.  
  31. .inputSearchHome:focus .search-home
  32. {
  33. background: rgba(255, 255, 255, 0.5);
  34. border: solid 3px red;
  35. }
  36.  
  37. .submitSearchHome
  38. {
  39. display: inline-block;
  40. float: right;
  41. margin: 0 10px 0 0;
  42. width: 10%;
  43. text-align: right;
  44. background: transparent;
  45. border: none;
  46. outline: none;
  47. color: rgba(255, 255, 255, 0.5);
  48. }
  49.  
  50. <form action="./search.php" method="get" class="search-home" name="widget-search-home">
  51. <input type="text" class="inputSearchHome" name="s" placeholder="Wyszukaj szkolenie" />
  52. <button type="submit" class="submitSearchHome"><span class="fa fa-search icon-md"></span></button>
  53. </form>
Neutral
To jest chyba niemożliwe z punktu CSS i HTML, musiałbyś do tego dołączyć jeszcze np. JS, żeby móc to wykonać.

W ogóle, to w zapisie masz chyba błąd w składni, składnia border jest taka:

Cytat
border: medium dashed green;

https://developer.mozilla.org/en-US/docs/Web/CSS/border

Najpierw trzeba podać wysokość/grubość linii, następnie styl i na końcu kolor.

Pseudo-selektory i selektory o ile mi wiadomo mogą odwoływać się tylko i wyłącznie do następników, a nie poprzedników. Nawet na chat'cie IRC na kanale (FREENODE) #html się o tym upewniłem. Jak sama nazwa wskazuje są to kaskadowe arkusze stylów, działają jak kaskada. Wyobraź sobie wodę, która spływa z takich zrębów/kaskad. Woda płynie tam gdzie jest najniżej i chyba tak właśnie działa CSS, może odwoływać się tylko w dół kodu, nie w górę, to nie język programowania. Jedynym trick'iem jaki mógłbyś wykonać to moim zdaniem połączenie input[type="checkbox"] z label. Ale wtedy musiałbyś chyba tylko klikać na tekst, który byłby w label, a nie w input[type="text"] nadając mu focus. Żeby problem rozwiązać to chyba trzeba by było zastosować pozycję absolutną i/lub relatywną, czy coś w tym stylu. Dodatkowo można by użyć pseudoklas jakimi są ::after i ::before, choć tego do końca pewien nie jestem.

Reasumując, aby to wykonać potrzebne jest Tobie nadanie focus'a dla label i dla input[type="text"], ponieważ wtedy zaznaczy Ci się input[type="checkbox"]. Gdy checkbox zostanie zaznaczony, to wykona się akcja, czyli np. zostaną uaktywnione napisane przez Ciebie style.

Ale tak jak pisałem wcześniej, nie wiem, czy to możliwe z poziomu CSS'a i HTML'a, więc za dużo powiedzieć nie mogę.

Kod
body {
   background:grey;
}

form {
    border:1px solid grey;
    padding:30px;
}

input#box {
    display:none;
}


input#box:checked + form.form1 {
    border:1px solid green;
    background:orange;
}


  1.  
  2. <input type="checkbox" id="box"/>
  3.  
  4. <form class="form1">
  5.  
  6. <label for="box">click</label>
  7. <input type="text"/>
  8.  
  9. </form>
  10.  
  11. </body>


Można to napisać bez tych trick'ów, o ile z tymi trick'ami w ogóle się da, to możesz użyć pseudo-selector'a :focus-within.

Kod
.form1 {
    border:5px solid grey;
    padding:30px;
}

.form1:focus-within{
    background:green;
    border:5px solid black;
}


  1. <form class="form1">
  2. <input type="text"/>
  3. </form>

https://css-tricks.com/almanac/selectors/f/focus-within/

Link1, link2, link3, link4, link5, link6.
trueblue
CSS to kaskadowe arkusze stylów - selektorami "podróżujesz" w dół od elementu.

  1. .search-home:focus-within
  2. {
  3. background: rgba(255, 255, 255, 0.5);
  4. border: solid 3px red;
  5. }


Albo po prostu tą wielką ramkę dodaj do input, a nie całego formularza.
shpaque
Zrobiłem szybki jsfiddle - jak dam ".parent:hover .child:hover" to zmienia background i to parenta chyba bo na calej szerokosci..?

https://jsfiddle.net/gmaLf4k7/3/
trueblue
Chyba nie rozumiesz jak działa CSS i co zrobiłeś.

Na :hover .parent stylujesz .child (to, że jest tam .child:hover ma już niewielkie znaczenie, bo czy tam będzie czy nie, to tak samo to zadziała).
shpaque
czyli dac tak jak pisales dla inputa klase z formularza -a co z buttonem zeby byl w inpucie z prawej strony? input:before?
trueblue
Poprzez input:before uzyskasz button? Jeśli Ci się uda, to tak zrób...

Podałem Ci jedno rozwiązanie bez dużej ingerencji w CSS.
Drugie rozwiązanie wymaga tego, aby input i/lub button pozycjonować absolutnie. Chyba, że button docelowo jednak będzie poza tą wielką ramką.
shpaque
button to lupa (klasa fa-search), form/input jest zaokraglony na rogach, a lupa chcialem zeby byla z prawej strony w polu. dlatego ta pseudoklasa w formularzu ktory spina button i input razem - wyglada to tak jak powinno, jednak taki kaprys mialem zeby zmianil sie background forma po focusie inputa

podejrzec to mozna tutaj: http://www.edu-online.edu.pl/index.php
trueblue
Neutral, Ty błyskawico...smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.