Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu css Kanał ATOM (tag: css)

Autor wpisu: Łukasz Socha, dodany: 30.10.2012 20:12, tagi: css

pobierz w .pdf(przeznaczone do wydruku)

Wczoraj kodując jeden z projektów napotkałem na problem z @font-face w Firefoxie (tak, tak tym razem nie w IE :P ). Mianowicie FF nie odczytuje plików .eot ani .ttf. Na szczęście problem ten możemy rozwiązać w bardzo prosty sposób – dodając inne formaty czcionki do @font-face:

@font-face {
    font-family: "Ubuntu";
    src: url('fonts/Ubuntu.eot?') format('eot'), 
	 url('fonts/Ubuntu.woff') format('woff'), 
	 url('fonts/Ubuntu.ttf')  format('truetype'),
	 url('fonts/Ubuntu.svg#fonts/Ubuntu') format('svg');
}

Teraz musimy tylko wygenerować pliki w odpowiednim formacie. Osobiście używam tego narzędzia. Z moich testów wynika, że reguła ta działa we wszystkich popularnych przeglądarkach (FF/Chrome/Opera/IE/Safari) ;)

Autor wpisu: zleek, dodany: 19.10.2012 11:36, tagi: css, xhtml

Bardzo często dostając projekt graficzny od grafika widzimy, że zostały tam zamieszczone niestandardowe czcionki. Pół biedy jak czcionki te są użyte na elementach, które mogą zostać wycięte i wstawione na stronę w postaci grafik. Problem pojawia się wtedy, gdy sam tekst dostarczany do elementów strony występuje przy użyciu takiej czcionki. Jest jednak na to rada. [...]

Autor wpisu: Łukasz Socha, dodany: 10.10.2012 22:02, tagi: css

pobierz w .pdf(przeznaczone do wydruku)

Po dłuższej przerwie związanej z nadmiarem pracy i nowym rokiem akademickim wracam z nowym cyklem krótkich, ale praktycznych wpisów odnośnie CSS. Na dobry początek zajmijmy się obrazkami.

Kodując listę artykułów (albo inną listę z miniaturami) spotykamy się z rożnymi rozmiarami zdjęć (dodatkowo zazwyczaj o różnych proporcjach). No i tu pojawia się problem – jak estetycznie wkomponować zdjęcia w listę? Osobiście używam zamiennie dwóch metod.

Metoda 1 – gdy wysokość może być zmienna

Jest to chyba najbardziej banalny (ale skuteczny ;) ) sposób. Możemy nadać obrazkowi stałą szerokość, a wysokość zostanie tak dobrana, by zachować proporcje:

img{
    width:200px;
}

Sposób ten wykorzystuję, gdy obrazek nie musi mieć stałej wysokości.

Metoda 2 – gdy przestrzeń na obrazek jest ograniczona

Druga metoda jest nieco bardziej „zaawansowana”. Obrazek możemy umieścić w kontenerze o stałych rozmiarach.

Kod HTML:

<div class=”image”>
    <img src=”...” alt=”” />
</div>

Kod CSS:

.image{
    width:200px;
    height:100px;
    overflow:hidden;
}

Dzięki umieszczeniu obrazka wewnątrz kontenera o stałych rozmiarach i właściwości overflow:hidden będzie on „przycinany” do wskazanych rozmiarów. Może nie jest to idealny sposób, ale skuteczny, gdy projekt graficzny wymaga miniatur o stałych wymiarach.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Łukasz Socha, dodany: 01.09.2012 21:32, tagi: css

pobierz w .pdf(przeznaczone do wydruku)

CSS 3 dostarcza wiele nowości, które z pewnością ułatwią i przyspieszą pracę nad atrakcyjnymi wizualnie projektami. Mimo, że CSS 3 jest jeszcze w fazie implementacji przez wszystkich najważniejszych producentów przeglądarek, warto powoli zaznajamiać się z możliwościami tej technologii ;)

Osobiście najbardziej nie lubię tworzyć wszelkiej maści formularzy. Nie dość, że trzeba napisać wiele linii kodu, to jeszcze istnieją ograniczenia technologiczne. Co nowego przynosi CSS 3 na tym polu?

Nowa wersja CSS „potrafi” rozróżniać różne typy pół formularza – zamiast pisać osobne klasy dla checkbox czy radio będziemy mogli napisać input[type=checkbox]. Prawda, że dużo lepiej tak wygląda? Poza tym, w końcu, będziemy mogli dowolnie edytować wygląd pól typu radio i checkbox bez utycia JavaScriptu – tak na marginesie, nie rozumiem czemu dopiero teraz deweloperzy umożliwią to. Inną przydatną nowością jest pseudoklasa :focus.

Żeby nie było tylko teoretycznie zamieszczam kod przykładowego formularza kontaktowego z wykorzystaniem CSS 3:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>...</title>
        <style type="text/css">
            body{
                font-family: Arial, sans-serif;
                font-size:14px;
                padding: 30px;
            }
            label{
                width:100px;
                display: inline-block;
            }
            input, textarea{
                margin: 5px 0;
                border:1px solid #BAE1FF;
                border-radius: 5px;
                -webkit-appearance: none;
                -moz-appearance: none;
                background-image: linear-gradient(top, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -o-linear-gradient(top, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -moz-linear-gradient(top, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -webkit-linear-gradient(top, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -ms-linear-gradient(top, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);

                background-image: -webkit-gradient(
                    linear,
                    left top,
                    left bottom,
                    color-stop(0, rgb(255,255,255)),
                    color-stop(1, rgb(226,242,252))
                    );
            }
            textarea{
                width:400px;
                height: 200px;
            }
            input[type=text] {
                width:150px;
                height: 26px;
                margin-left: 5px;
            }
            input:focus, textarea:focus, select:focus {
                outline-color: #0090FF;
                ackground-image: linear-gradient(bottom, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -o-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -moz-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -webkit-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);
                background-image: -ms-linear-gradient(bottom, rgb(255,255,255) 0%, rgb(226,242,252) 100%, rgb(57,101,133) 84%);

                background-image: -webkit-gradient(
                    linear,
                    left bottom,
                    left top,
                    color-stop(0, rgb(255,255,255)),
                    color-stop(1, rgb(226,242,252))
                    );
            }
            input[type=checkbox] {
                width:20px;
                height: 20px;
                border-radius: 2px;
                vertical-align: middle;
                margin-right: 5px;
            }
            input[type=checkbox]:checked {
                background: url('images/checkbox.png') center no-repeat;;
            }
            input[type=submit] {
                background: #0199FA;
                color: #ffffff;
                font-weight: bold;
                padding: 5px 15px;
            }
            input[type=reset] {
                background: #DEF3FF;
                color: #0784CE;
                font-weight: bold;
                padding: 5px 15px;
                margin-left: 10px;
            }
        </style>
    </head>
    <body>

        <form>
            <label for="name">Imię i nazwisko:</label>
            <input type="text" name="name" /><br />
            <label for="email">Adres e-mail:</label>
            <input type="text" name="email" /><br />
            <label for="message">Treść: </label><br />
            <textarea placeholder="Wpisz treść" name="message"></textarea><br/>
            <input type="checkbox" name="send"/> Wyślij kopię na mojego e-maila.<br />
            <input type="submit" value="Wyślij" /><input type="reset" value="Wyczyść" />
        </form>
    </body>
</html>

Jak to wygląda w praktyce możecie zobaczyć tutaj.

W połączeniu nowości CSS 3 z możliwościami Web forms 2, o którym pisałem opisujac HTML5, będziemy mieli naprawdę zaawansowane narzędzia do tworzenia formularzy. Pytanie tylko kiedy?

Autor wpisu: Łukasz Socha, dodany: 24.02.2012 22:11, tagi: css

pobierz w .pdf(przeznaczone do wydruku)

Tworząc rożnego rodzaju strony www często napotykamy konieczność podmiany tekstu obrazkiem – np. umieszczając logo strony lub niestandardowy nagłówek. Moglibyśmy użyć do tego znacznika img, ale ten sposób nie jest przyjazny użytkownikom ani SEO friendly. Z pomocą przychodzi CSS.

Jest wiele technik radzenia sobie z tym problem. Przedstawię dwie najprostsze i chyba obecnie najpopularniejsze.

1. sposób

<h1>Image Replacement</h1>

h1{
    background: url('images/header.png') no-repeat;
    height: 150px;
    width: 250px;
    text-indent: -9999em;
}

Założenia tej techniki są bardzo proste: dodaje do elementu tło z obrazkiem i wyrzuca z niego tekst gdzieś poza ekran.

2. sposób

<h1>Image Replacement</h1>

h1{
    background: url('images/header.png') no-repeat;
    height: 150px;
    width: 250px;
    font-size:0;
}

Drugi sposób jest jeszcze bardziej banalniejszy. Wystarczy nadać atrybutowi font-size zerową wartość. Osobiście preferuję tę metodę.

Zakończenie

Image Replacment jest bardzo prostą techniką używaną przez projektantów stron www, ale jest bardzo przydatna. Zamiast dodawać logo za pomocą img możemy dodać nagłówek h1 z nazwą strony. Chyba nie muszę mówić jakie przynosi to korzyści. :)

Autor wpisu: batman, dodany: 20.02.2012 08:00, tagi: css

Nettuts+ zaserwował nam kolejny quiz na temat wiedzy o CSS. Tym razem na warsztat trafił CSS3. Niestety nie popisałem się i osiągnąłem wyjątkowo słaby wynik – nieco ponad 54%. Napiszcie w komentarzu jak wam poszło.

image

Autor wpisu: Vokiel, dodany: 29.01.2012 15:00, tagi: jquery, javascript, css

src: http://http.cdnlayer.com

Ochrona własnego adresu poczty elektronicznej stała się „oczywistą oczywistością”. Niezliczone spam-boty przeczesują Internet w poszukiwaniu adresów email, które później zalewane są falą niechcianej poczty. Niestety często jesteśmy zmuszeni udostępnić swój adres. Wpisany zwykłym tekstem, a tym bardziej dodany do linku z mailto stanie się bardzo szybko łupem spamerów. O ile na formę upublicznienia adresu w obcych serwisach zwykle nie mamy wpływu, o tyle mamy w przypadku własnych. Jako, że potrzeba jest matką wynalazku, postanowiłem stworzyć własne rozwiązanie. Połączenie CSS i JavaScript przyniosło oczekiwany skutek.

Założenia protectEmails

Tworząc założenia starałem się patrzeć na problem możliwie z wielu stron. Najważniejszymi punktami są:

  1. Czytelność dla użytkownika końcowego
  2. Ochrona przed podstawowymi mechanizmami spam-botów
  3. Łatwość modyfikacji wyglądu
  4. Prostota w stosowaniu

Czytelność dla użytkownika końcowego

Przede wszystkim chciałem uniknąć rozwiązań typu info [at] example.com, które poza tym, że już dawno nie chronią przed botami, to dodatkowo są męczące dla użytkowników. Wszystkie odmiany tego rozwiązania charakteryzują się tą samą trudnością w pozyskaniu maila przez odwiedzającego stronę – podmiana fragmentów, łatwość pomyłki. Tworząc swoje rozwiązanie, chciałem, aby adres email był widoczny w zwykłej formie, po prostu jako info@example.com.

Dodatkowo, uważam, że ważne jest też zachowanie standardowej funkcjonalności linku, który otwiera domyślny program pocztowy klienta.

Ochrona przed podstawowymi mechanizmami spam-botów

Rozwiązanie musi być w jakiś sposób unikatowe, tak aby standardowe funkcje spamerów nie były w stanie takiego adresu wyłuskać. Oczywiście, nie da się zabezpieczyć w 100%, zawsze znajdzie się ktoś, kto napisze dedykowane rozwiązanie. Jednak dużą część automatów można wyeliminować.

Poszukując gotowych rozwiązań spotkałem się z dużą ilością pseudo-zabezpieczeń. Nie dość, że utrudniają one życie użytkownikom, to dodatkowo wystawiają adresy na pastwę botów, np.:

<a href="mailto:info@example.com">info [ at ] example.com</a>
<a href="mailto:info@example.com">info [ at ] example [dot] com</a>

Lub po prostu utrudniają życie, np.:

<span class="email">info [ at ] example [dot] com</spam>

W przypadku powyższego istnieją rozwiązania oparte na JavaScript, które na podstawie klasy modyfikują znacznik span, przerabiając go na klikalny adres email. Jest to dość dobre rozwiązanie z jednym mankamentem – adres jest czytelny dla botów.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.