BEM denkwijze

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Belastingdienst - Freelance Senior Applicatie ontw

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: We verwachten van je, dat je: Brede ervaring hebt als JAVA-ontwikkelaar; Ervaring hebt met Agile/Scrum-werken en je thuis voelt in een Agile omgeving; Een aandeel levert aan het scrumproces en in de SAFe-releasetrain; Zelfstandig werkt in een scrumteam en intensief de samenwerking op zoekt met je directe collega’s en je omgeving; Ervaring meebrengt met het schattten en inplannen van taken tot en met het testen en demonstreren van de opgeleverde functionaliteit; Collega’s in je

Bekijk vacature »

Lead developer (PHP, Symfony, DDD)

Functie Als Lead developer zorg je ervoor dat het team (bestaande uit zowel junior als ervaren developers) in staat is om de kwaliteit van de software (en code) verder te verhogen. In samenwerking met het team, de product owner en de andere lead developers zet je technische lijnen uit en bepaal je de prioriteiten per sprint. Lijkt het jou interessant om complexe problemen op te lossen en bijvoorbeeld een nieuwe applicatiestructuur in Symfony op te zetten? Dan komen wij graag met je in contact. Eisen • HBO werk- en denkniveau (ze kijken niet naar papieren, maar naar denkniveau, motivatie en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

JAVA Programmeur

Bedrijfsomschrijving Functieomschrijving We zoeken per direct enthousiaste software engineers die ons team komen versterken.We werken in DevOps teams met een sterk gevoel voor verantwoordelijkheid. Er wordt nauw samengewerkt met ons Business analyse team (BAT), met onze uitvoerende medewerkers en met de DevOps teams onderling binnen het domein. Het liefst hebben we veel en vaak interactie met onze interne en externe eindgebruikers om zo de juiste dingen te maken. We werken multidisciplinair in een dynamische omgeving. Achtergrond opdracht De Businesseenheid Examens is verantwoordelijk voor de logistiek van de staatsexamens Voortgezet (speciaal) onderwijs, Nederlands als 2e taal en schoolexamens. In het kader

Bekijk vacature »

Laravel / PHP developer gezocht!

Functie omschrijving Wij zijn op zoek naar een Laravel PHP Developer voor een leuk bedrijf in de omgeving van Amsterdam! Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken; van A tot Z; Je hebt na de oplevering contact met de klant wanneer zij problemen ervaren; Je denkt mee over het verbeteren van de werkprocessen; Je denkt mee over softwareoplossingen; Je speelt in op de behoefte van de klant; Je houdt je bezig met het verbeteren, aanpassen en vernieuwen van de

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Junior .NET developer

Functie Wij zijn bezig met het ontwikkelen van een nieuw product en wij hebben jouw hulp hierbij nodig! Als junior .NET ontwikkelaar krijg jij de kans om samen met ons deze nieuwe uitdaging aan te gaan! Momenteel bestaat ons team uit drie interim Software Engineers. Twee hiervan zijn zeer ervaren .NET specialisten die inmiddels hun strepen in dit vakgebied al hebben behaald. Ook hebben wij een junior als onderdeel van ons team die zich op dit moment nog bezig houdt met de Front-end (Angular/TypeScript), maar zich nu ook meer gaat verdiepen in de backend. Wij willen ons team graag verder

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

IoT Software Developer PHP

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een IoT software developer met kennis van PHP. In deze rol wordt je verantwoordelijk voor het vernieuwen van het multimedia platform van een super tof bedrijf in Breda. Je gebruikt PHP als programmeerlaag, en bent in staat om de helicopterview te pakken / projectmatig te werken. Jouw werkzaamheden zien er als volgt uit: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "intern" ontwikkelde multimedia platform. Je neemt de lead in het moderniseren van het platform door het deels opnieuw op te zetten of

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een gewaardeerde werkgever in regio Tilburg waar jij de tijd en ruimte krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je gaat projecten vanaf het begin tot het eind begeleiden. Je sluit aan bij meetings met klanten om hun processen in kaart te brengen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

C# developer

Functie Als C# ontwikkelaar ben jij de spin in het web bij deze organisatie. Jij begeleidt en traint de field engineers die bij de klanten machines leveren en installeren. Daarnaast ondersteun jij de field engineers als zij bij de klant vastlopen bij het installeren van de machine m.b.t. software matige vragen. Jouw doel is dan ook om de technische kennis van de field engineers door middel van training zoveel mogelijk uit te breiden. Dit om ervoor te zorgen dat zij zelfstandiger software matige problemen kunnen oplossen. Ook ben jij verantwoordelijk voor het bedenken van software oplossingen voor klanten en dit

Bekijk vacature »

UX Writer (m/v/d)

UX Writer (m/v/d) Everything we do, starts with you. Together with you, we build the most human-centric fintech. We have the ambition to create the next. And - with Bertelsmann - a strong foundation to start from. Let’s make it new – for society and for yourself. Wij zijn op zoek naar een UX Writer (m/v/d) Fulltime - Op ons kantoor in Amsterdam of Heerenveen / deels vanuit huis Als UX Writer bij Riverty hou jij je bezig met onze strategie om daar te zijn waar onze gebruikers zijn en op de manier waarop zij ons nodig hebben, terwijl wij

Bekijk vacature »

Developer Full Stack

Functie omschrijving Developer gezocht! Ben jij een enthousiaste developer die graag wil bijdragen aan ontwikkelingen binnen een mooie organisatie? Solliciteer dan snel. Wij zijn op zoek naar een Full Stack Developer uit de regio Nijkerk die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een SaaS applicatie. Je moet beschikken over beheersing van zowel de Nederlandse als Engelse taal aangezien je samen met de klant gaat werken. Bedrijfsprofiel Je komt te werken binnen een echt familiebedrijf dat al sinds 1925 actief is binnen de FMCG branche. Het bedrijf heeft 40 medewerkers en er heerst een platte communicatiestructuur waarbij

Bekijk vacature »

Pagina: « vorige 1 2

Ozzie PHP

Ozzie PHP

10/08/2016 03:02:22
Quote Anchor link
@Wouter J:

Duidelijk verhaal ... wat ook daadwerkelijk opgaat als dingen/elementen continu zouden veranderen. Echter ... volgens mij bouwen we een website naar een vaststaande structuur en weten we dus op voorhand wat waar staat.

Wil ik een speciale lijst toevoegen dan voeg ik een lijst met class "my_special_list" toe. Waarom moet ik dan alle <li>'s die daar inzitten ook weer een aparte class geven, terwijl ik die prima kan benaderen via het root-element <ul> met de class "my_special_list"?

Komen we weer even terug op het voorbeeld met het klaslokaal. Stel we hebben 1 klaslokaal met felle groene verlichting, en 1 klaslokaal met felle rode verlichting.

Ieder kind dat het rode lokaal binnenstapt wordt door de verlichting vanzelf roodgekleurd en is dus een "rood" kind. Ieder kind dat het groene lokaal binnenstapt wordt op diezelfde manier "groen" van kleur. We weten dus dat in het rode lokaal altijd rode kinderen zitten, en in het groene lokaal altijd groene kinderen. WAAROM zouden we dan bij de kinderen in het rode lokaal nog een extra bordje om hun nek hangen om aan te geven dat ze rood zijn? Nergens voor nodig, want omdat ze in het rode lokaal zitten, weten we dat al. Idem voor het groene lokaal.

Hoe achterlijk dit voorbeeld ook is (maar goed dat was het originele voorbeeld ook) geeft het wel exact aan wat ik bedoel te zeggen. Op basis van een overkoepelend element, kun je generieke elementen binnen het overkoepelend element prima stijlen. Het lijkt mij overkill om al die generieke elementen een bordje om hun nek te hangen / een class te geven.
Gewijzigd op 10/08/2016 03:14:38 door Ozzie PHP
 
PHP hulp

PHP hulp

19/04/2024 21:03:16
 
Ward van der Put
Moderator

Ward van der Put

10/08/2016 10:43:21
Quote Anchor link
Ozzie PHP op 10/08/2016 03:02:22:
Wil ik een speciale lijst toevoegen dan voeg ik een lijst met class "my_special_list" toe. Waarom moet ik dan alle <li>'s die daar inzitten ook weer een aparte class geven, terwijl ik die prima kan benaderen via het root-element <ul> met de class "my_special_list"?

Het verschil is dat jouw versie impliciet is met een verborgen opmaak die je alleen kunt terugvinden door in de CSS-code te zoeken. Ik moet bijvoorbeeld binnen de accolades gaan kijken hoe jij een kerstboom optuigt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
ul.kerstboom {
  ...
}

ul.kerstboom li {
  ...
  ...
  /* Dit moet ik allemaal lezen om te achterhalen wat je doet en laat. */
  ...
  ...
}

Aangezien jij HTML-elementen rechtstreeks opmaakt, loop ik ook nog het risico dat je elders in de CSS-code bijvoorbeeld hebt verzonnen dat lijsten in een footer anders worden opgemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
footer ul {
  ...
}

BEM maakt keuzen expliciet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.kerstboom {
  ...
}

.kerstboom__kerstbal {
  ...
}

.kerstboom__piek {
  ...
}

.kerstboom__kerstbal--goudkleurig {
  ...
}

.kerstboom__kerstbal--zilverkleurig {
  ...
}

Ozzie PHP op 10/08/2016 03:02:22:
Duidelijk verhaal ... wat ook daadwerkelijk opgaat als dingen/elementen continu zouden veranderen. Echter ... volgens mij bouwen we een website naar een vaststaande structuur en weten we dus op voorhand wat waar staat.

Maar BEM is dan ook bedoeld voor templating. Kijk bijvoorbeeld maar eens naar de BEM-bouwstenen in Material Design Lite (MDL) van Google. Als een structuur op voorhand vastligt en later zelden of nooit ingrijpend verandert, is een objectgeoriënteerd, modulair template-systeem niet interessant. Áls ...
 
Ozzie PHP

Ozzie PHP

10/08/2016 12:13:23
Quote Anchor link
>> Maar BEM is dan ook bedoeld voor templating.

Dat is dus een situatie waarin het handig zou kunnen zijn.

>> Het verschil is dat jouw versie impliciet is met een verborgen opmaak die je alleen kunt terugvinden door in de CSS-code te zoeken. Ik moet bijvoorbeeld binnen de accolades gaan kijken hoe jij een kerstboom optuigt

Dat moet je in de BEM variant ook, met hooguit als verschil dat je daar direct naar het naampje kunt gaan van de class. Maar met bijv. Firebug zie je ook direct de opmaak van ieder element, dus voor mij persoonlijk is dit geen zwaarwegend argument. Ik vind het dan weer zonde van resources om generieke elementen pseudo-uniek te maken door ze hun eigen class te geven.

Maar goed, uiteindelijk is het een kwestie van wat je zelf makkelijk vindt. Ieder nadeel heb z'n voordeel ;)
 
Eddy E

Eddy E

10/08/2016 22:19:50
Quote Anchor link
Ozzie PHP op 08/08/2016 21:25:20:
Wat een vreemde manier om generieke elementen te voorzien van een class ... lijkt me overkill.


Helemaal mee eens.
Ik haak dan wel even halverwege in het topic aan, maar om elk element een class te geven, is toch niet nodig?
Je kan er toch (bijna) altijd bij zonder enige class dan ook?
Een class op <body> is geen gek idee en soms op <section> ook niet, maar dat doe je dan meestal via een id=...!

Wat is er mis met dit?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
body#contact nav ul li a:nth-child(1) { font-weight: bold; }


Toch duidelijk dat de eerste link van je menu op de contact-pagina vet wordt?

Toevoeging op 10/08/2016 22:29:58:

Als reactie op Ward z'n code van een kerstboom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="kerstboom">
    <div>Piek</div>
    <div class="bal zilver">Zilveren bal</div>
    <div class="bal goud">Gouden bal</div>
    <div>Voet</div>
</div>


/* Kerstboom hier */
.kerstboom             {  }

.kerstboom div:first-child     { /* piek /* }
.kerstboom div:last-child     { width: 10%; background-color: brown; }

.kerstboom .bal         { border-radius: 100%; }

.kerstboom .zilver         { background-color: grey; }
.kerstboom .goud         { background-color: yellow; }


Zo houd je sematiek hoog, weet je alsnog alles te vinden en ben je veel flexibeler. Je kan ook een gouden stam hebben... Gewoon class=goud toevoegen...
Gewijzigd op 10/08/2016 22:30:47 door Eddy E
 
Wouter J

Wouter J

10/08/2016 22:31:36
Quote Anchor link
Quote:
Toch duidelijk dat de eerste link van je menu op de contact-pagina vet wordt?

Ironisch bedoelt? Zo ja, negeer de rest van t bericht maar. :)

<nav> is niet alleen je hoofdnav. Ook die serie linkjes in je footer is een nav. Sterker nog, die "< prev | next >" linkjes bij blogposts zijn ook nav. Dus nu wordt elk eerste li'tje in een nav (iedere willekeurige nav) bold.

Ja, je zal nu wel 1 <nav> hebben. Maar over 30 dagen voeg je toch nog een sidebar met een subnavje toe en het gedoe begint. Dan moet die weer font-weight:normal; krijgen, met eventueel andere stijlen die van andere CSS selectors zijn geinherit, etc.

Tevens is de selector veel te specifiek. Niet alleen kun je op deze manier de stijl nogmaals hergebruiken, ook zal deze selector relatief traag zijn. (CSS selectors worden altijd van rechts naar links gelezen).
 
Ozzie PHP

Ozzie PHP

10/08/2016 22:44:29
Quote Anchor link
body#contact nav ul li a:nth-child(1) { font-weight: bold; }

Body met een id is niet nodig, want er staat op iedere pagina maar 1 body.

Dan hou je dus over:

#contact nav ul li a:nth-child(1) { font-weight: bold; }

Die ul en li zijn uit m'n hoofd ook niet nodig, dus blijft over:

#contact nav a:nth-child(1) { font-weight: bold; }

nth-chilc(1) kan first-child worden en dan krijg je:

#contact nav a:first-child { font-weight: bold; }

>> Tevens is de selector veel te specifiek.

Nu dus niet meer ;-)
 
Wouter J

Wouter J

10/08/2016 22:55:40
Quote Anchor link
Quote:
Nu dus niet meer ;-)

Gelukkig weten jij en ik dat "Tevens" betekend dat er voor nog veel meer geschreven staat.

Overigens werk de hele selector niet zoals verwacht (zowel specifieke als de korte, welke idd identiek zijn), maar dat mag eenieder zelf uitvinden :)
 
Ozzie PHP

Ozzie PHP

11/08/2016 00:52:59
Quote Anchor link
>> Overigens werk de hele selector niet zoals verwacht

Haha ... zou zomaar kunnen ;-) Heb 'm ook niet getest.

Anyhow ... gebruik gewoon BEM als je dat fijn vindt. Ik gebruik het niet. Stijl dingen die algemeen zijn ook als zodanig, en wat specifiek noodzakelijk is, ook als zodanig. Dat is mijn werkwijze. Scheelt in ieder geval een hoop classes ;-)
 
Eddy E

Eddy E

11/08/2016 10:03:48
Quote Anchor link
Wouter J op 10/08/2016 22:31:36:
Ironisch bedoelt? Zo ja, negeer de rest van t bericht maar. :)


Beetje wel ja ;)
Desalniettemin is het zo benaderen van elementen, (hetzij een strakke hierachie nodig is) wel mogelijk.

In tegenstelling tot BEM, vond ik vanochtend dit: http://acss.io/
Maar hetzelfde als in mij ogen: veel te veel classes en code voor iets wat veel eenvoudiger met iets geavanceerdere CSS ook gewoon mogelijk is.
 
Ward van der Put
Moderator

Ward van der Put

11/08/2016 10:26:12
Quote Anchor link
Eddy E op 11/08/2016 10:03:48:
In tegenstelling tot BEM, vond ik vanochtend dit: http://acss.io/
Maar hetzelfde als in mij ogen: veel te veel classes en code voor iets wat veel eenvoudiger met iets geavanceerdere CSS ook gewoon mogelijk is.

Er zijn inderdaad meer template-talen die er, net zoals BEM, een eigen dialect van CSS op nahouden. Naast ACSS (Atomic CSS) zijn dat bijvoorbeeld SMACSS (Scalable and Modular Architecture for CSS) en OOCSS (Object Oriented CSS).

Het draait er niet om dat ze iets zouden doen dat in CSS onmogelijk is: ze gebruiken uiteindelijk immers allemaal CSS. Ik denk dat je ze meer moet zien als tussentaal die een logischer (of beter te hanteren) verband legt tussen DOM-elementen enerzijds en CSS-eigenschappen anderzijds.

Vooral het feit dat ze objectgeoriënteerd zijn, maakt ze aantrekkelijk als je ook al objectgeoriënteerd PHP gebruikt. Een BEM-block kun je zien als één klasse. Vergelijkbaar met methoden en properties in een PHP-klasse kan één zo'n CSS-klasse meerdere DOM-elementen en meerdere CSS-eigenschappen omvatten.
Gewijzigd op 11/08/2016 10:28:39 door Ward van der Put
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.